使用NumPy進(jìn)行數(shù)組數(shù)據(jù)處理的示例詳解
介紹
NumPy是Python中用于數(shù)值計(jì)算的核心包之一,它提供了大量的高效數(shù)組操作函數(shù)和數(shù)學(xué)函數(shù)。它支持多維數(shù)組和矩陣運(yùn)算,并且可以集成C/C++和Fortran的代碼,因此可以非常高效地處理大量數(shù)據(jù)。以下是NumPy的一些主要功能和用途:
1.多維數(shù)組:NumPy的核心是ndarray(N維數(shù)組)對(duì)象,可以用來存儲(chǔ)同類型的元素。這些數(shù)組可以是一維、二維或更高維度。它們提供了方便的數(shù)組索引和切片,以及許多基本操作和計(jì)算(如加、減、乘、除、取冪等)。
2.數(shù)組操作:NumPy提供了大量的數(shù)組操作函數(shù),包括數(shù)學(xué)函數(shù)(如三角函數(shù)、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)等)、邏輯函數(shù)(如布爾運(yùn)算、比較運(yùn)算、邏輯運(yùn)算等)、排序函數(shù)、統(tǒng)計(jì)函數(shù)等。
3.矩陣操作:NumPy提供了矩陣操作函數(shù),如矩陣加、減、乘、轉(zhuǎn)置、求逆等,可以方便地進(jìn)行線性代數(shù)計(jì)算。
4.隨機(jī)數(shù)生成:NumPy可以生成各種隨機(jī)數(shù),如正態(tài)分布、均勻分布、泊松分布、貝努利分布等,以及隨機(jī)排列和隨機(jī)選擇等。
5.文件IO:NumPy可以讀寫各種文件格式,包括文本文件、二進(jìn)制文件和matlab文件等,以便于數(shù)據(jù)的存儲(chǔ)和傳輸。
6.與其他Python庫(kù)的整合:NumPy可以方便地與其他Python庫(kù)(如Pandas、SciPy、matplotlib等)整合使用,以進(jìn)行數(shù)據(jù)分析、科學(xué)計(jì)算和可視化等。
import numpy as np
Ndarray
1.ndarray的操作
將列表數(shù)據(jù)生成array()
a = np.array([1,2,3,4,5])
確認(rèn)數(shù)據(jù)類型
print(a.dtype) # int32
如果將浮點(diǎn)數(shù)代入整數(shù)型數(shù)組里,數(shù)據(jù)自動(dòng)變?yōu)檎麛?shù)型(小數(shù)點(diǎn)以下自動(dòng)舍掉)
a[1] = -3.6 print(a) # [1 -3 3 4 5]
變換數(shù)據(jù)類型
a2 = a.astype(np.float32) print(a2, a2.dtype) # [1. -3. 3. 4. 5.] float32
二維數(shù)組
b = np.array([[1, 2, 3], [3.2, 5.3, 6.6]]) print('b=', b) # b= [[1. 2. 3. ][3.2 5.3 6.6]] print('b[1,2]=', b[1,2]) # b[1,2] = 6.6
2.ndarray的參數(shù)
- ndarry.ndim 數(shù)組的維數(shù)
- ndarry.shape 數(shù)組的行列數(shù)
- ndarry.size 元素的個(gè)數(shù)
- ndarry.dtype 數(shù)據(jù)的類別
print('ndim =', a.ndim, b.ndim) print('shape =', a.shape, b.shape) print('size =', a.size, b.size) print('dtype =', a.dtype, b.dtype) # ndim = 1 2 # shape = (5,) (2, 3) # size = 5 6 # dtype = float32 float64
reshape進(jìn)行數(shù)組重組(元素?cái)?shù)不變)
print(b.reshape(6)) # 轉(zhuǎn)為1維數(shù)組 [ 1. 2. -1.1 3.2 5.3 6.6] print(b.reshape(3,2)) # 轉(zhuǎn)為3行2列數(shù)組 [[ 1. 2. ][-1.1 3.2][ 5.3 6.6]] print(b.T) # 矩陣的轉(zhuǎn)置 [[ 1. 3.2][ 2. 5.3][-1.1 6.6]]
矩陣的計(jì)算
矩陣與數(shù)值的四則運(yùn)算時(shí),各個(gè)值都進(jìn)行運(yùn)算
print(b+2) #[[3. 4. 0.9][5.2 7.3 8.6]] print(b-2) #[[-1. 0. -3.1][ 1.2 3.3 4.6]] print(b*2) #[[ 2. 4. -2.2][ 6.4 10.6 13.2]] print(b/2) #[[ 0.5 1. -0.55][ 1.6 2.65 3.3 ]] print(b**3) #3次冪 [[ 1. 8. -1.331][ 32.768 148.877 287.496]] print(b//1) #用這種方法舍掉小數(shù) [[ 1. 2. -2.][ 3. 5. 6.]]
同維度矩陣計(jì)算時(shí),相同位置的值進(jìn)行運(yùn)算(矩陣維度不同時(shí)報(bào)錯(cuò))
c = b/2 print(b+c) # [[ 1.5 3. -1.65][ 4.8 7.95 9.9 ]] print(b-c) # [[ 0.5 1. -0.55][ 1.6 2.65 3.3 ]] print(b*c) # [[ 0.5 2. 0.605][ 5.12 14.045 21.78 ]] print(b/c) # [[2. 2. 2.][2. 2. 2.]]
行列の積は「@」
a行b列×b行c列=a行c列の行列
A = np.arange(6).reshape(3,2) B = np.arange(8).reshape(2,4) print(A) #[[0 1][2 3][4 5]] print(B) #[[0 1 2 3][4 5 6 7]] print(A@B) #[[ 4 5 6 7][12 17 22 27][20 29 38 47]]
矩陣的生成
1維矩陣的生成(初始值,終止值,條件)
- arange 條件為指定步長(zhǎng),總數(shù)自動(dòng)決定,不包括終止值
- linspace 條件為總數(shù),步長(zhǎng)自動(dòng)決定,包括終止值
np.arange(0,10,0.1) # array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, # 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5, # 2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, # 3.9, 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, # 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6. , 6.1, 6.2, 6.3, 6.4, # 6.5, 6.6, 6.7, 6.8, 6.9, 7. , 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, # 7.8, 7.9, 8. , 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9. , # 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9]) np.linspace(0,10,100) # array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , # 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, # 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2, # 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4. , 4.1, 4.2, 4.3, # 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, 5.2, 5.3, 5.4, # 5.5, 5.6, 5.7, 5.8, 5.9, 6. , 6.1, 6.2, 6.3, 6.4, 6.5, # 6.6, 6.7, 6.8, 6.9, 7. , 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, # 7.7, 7.8, 7.9, 8. , 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, # 8.8, 8.9, 9. , 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, # 9.9, 10. ])
多維矩陣
np.zeros((3,2)) #array([[0., 0.], # [0., 0.], # [0., 0.]]) np.ones((5,2,3), dtype=np.int16) # array([[[1, 1, 1], # [1, 1, 1]], # # [[1, 1, 1], # [1, 1, 1]], # # [[1, 1, 1], # [1, 1, 1]], # # [[1, 1, 1], # [1, 1, 1]], # # [[1, 1, 1], # [1, 1, 1]]], dtype=int16) print(np.ones((5,2,2))*128) [[[128. 128.] # [128. 128.]] # # [[128. 128.] # [128. 128.]] # # [[128. 128.] # [128. 128.]] # # [[128. 128.] # [128. 128.]] # # [[128. 128.] # [128. 128.]]]
3.例子
生成隨機(jī)二維數(shù)組
rnd = np.random.random((5,5)) print(rnd) # [[0.61467866 0.38383428 0.4604147 0.41355961 0.22680966] # [0.83895625 0.49135984 0.21811832 0.91433166 0.18616649] # [0.80176894 0.23622139 0.87041535 0.59623534 0.93986178] # [0.48324671 0.62398314 0.82435621 0.92421743 0.84660406] # [0.63578052 0.99794079 0.46970418 0.85743179 0.11774799]]
生成圖像
plt.imshow(rnd, cmap='gray') plt.colorbar() #0為黑色,1為白色
plt.imshow(rnd>0.5, cmap='gray') plt.colorbar()
color_img = np.array([ [[255,0,0], [0,255,0], [0,0,255]], [[255,255,0], [0,255,255], [255,0,255]], [[255,255,255], [128,128,128], [0,0,0]], ]) plt.imshow(color_img)
到此這篇關(guān)于使用NumPy進(jìn)行數(shù)組數(shù)據(jù)處理的示例詳解的文章就介紹到這了,更多相關(guān)NumPy數(shù)組數(shù)據(jù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解Python中實(shí)現(xiàn)單例模式的幾種常見方式
這篇文章主要為大家介紹了Python中實(shí)現(xiàn)單例模式的幾種常見方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03python中字符串變二維數(shù)組的實(shí)例講解
下面小編就為大家分享一篇python中字符串變二維數(shù)組的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04python中sklearn庫(kù)predict及python sklearn linearmodel(
Scikit-learn(sklearn)是機(jī)器學(xué)習(xí)中常用的第三方模塊,對(duì)常用的機(jī)器學(xué)習(xí)方法進(jìn)行了封裝,包括回歸(Regression)、降維(Dimensionality Reduction)、分類(Classfication)、聚類(Clustering)等方法,今天小編給大家分享python中sklearn庫(kù)predict的問題,感興趣的朋友一起看看吧2024-02-02python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表
今天小編就為大家分享一篇python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表,具有很好的價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11django1.11.1 models 數(shù)據(jù)庫(kù)同步方法
今天小編就為大家分享一篇django1.11.1 models 數(shù)據(jù)庫(kù)同步方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python素?cái)?shù)檢測(cè)實(shí)例分析
這篇文章主要介紹了Python素?cái)?shù)檢測(cè)方法,實(shí)例分析了Python判定素?cái)?shù)的相關(guān)技巧,需要的朋友可以參考下2015-06-06