numpy 庫簡單使用
一、numpy庫簡介
Python標准庫中提供了一個array類型,用於保存數組類型的數據,然而這個類型不支持多維數據,不適合數值運算。作為Python的第三方庫numpy便有了用武之地。
numpy庫處理的最基礎數據類型是用同種元素構成的多維數組(ndarray),簡稱數組。數組中所有元素的類型必須相同,數組中元素可以用整數索引,序號從0開始。ndarray類型的維度叫作軸(axes),軸的個數叫做秩(rank)。
二、numpy庫下載
pip install numpy
三、導入庫函數
import numpy as np
四、庫函數基本使用
1. 創建數組的函數 (ndarray類型)
函數 |
說明 |
np.array([ x, y, z], dtype = int) |
從列表或數組中創建數組 |
np.arange(x, y, i) |
創建一個由x到y,以i為步長的數組 |
np.linspace(x, y, n) |
創建一個由x到y,等分成n個元素的數組 |
創建一個m行n列的矩陣(3維數組) |
|
np.random.rand(m, n) |
創建一個m行n列的隨機數組 |
np.ones((m,n), dtype) |
創建一個m行n列的全1數組,dtype為數據類型 |
np.zeros((m,n), dtype) |
創建一個m行n列的全0數組,dtype為數據類型 |
創建一個m行n列的空數組,dtype為數據類型 |
1 import numpy as np 2 3 ''' numpy --> array() ''' 4 a1 = np.array([1,2,3,5,8,13,21,34,55,89], dtype = int) # 由列表創建數組 5 array_ = (2.3,8,10/3,5.0,1/7) # 創建元組 6 a2 = np.array(array_) # 由元組創建數組 7 print('numpy --> array():\n',a1,'\n',a2) 8 9 ''' numpy --> arange() ''' 10 arange_1 = np.arange(1,30,4) 11 arange_2 = np.arange(1,3,0.4) 12 print('numpy --> arange():\n',arange_1,'\n',arange_2) 13 14 ''' numpy --> linspace() ''' 15 lins_1 = np.linspace(1,10,10) 16 lins_2 = np.linspace(1,10,9, dtype = int) 17 print('numpy --> linspace():\n',lins_1,'\n',lins_2) 18 19 ''' numpy --> random.rand() ''' 20 rand_ = np.random.rand(3,4) 21 print('numpy --> random.rand():\n',rand_) 22 23 ''' numpy --> ones() ''' 24 ones_1 = np.ones((3,4)) # 默認為float 25 ones_2 = np.ones((3,4),dtype = int) 26 print('numpy --> ones():\n',ones_1,'\n',ones_2) 27 28 ''' numpy --> zeros() ''' 29 zeros_1 = np.zeros((2,3)) 30 zeros_2 = np.zeros((2,3), dtype = int) 31 print('numpy --> zeros():\n',zeros_1,'\n',zeros_2)
2. ndarray類型的常用屬性
屬性 |
說明 |
ndarray.ndim |
返回數組軸的個數,即數組的秩 |
ndarray.shape |
返回數組在每個維度上大小的整數元組 |
ndarray.size |
返回數組元素的總個數 |
ndarray.dtype |
返回數組元素的數據類型 |
ndarray.itemsize |
返回數組元素的字節大小 |
ndarray.data |
返回數組元素的緩存區地址 |
ndarray.flat |
數組元素的迭代器 |
1 import numpy as np 2 a = np.indices((5,8)) # 創建一個m行n列的矩陣 3 print("數組a的秩:",a.ndim) 4 print("數組a各維度的大小:",a.shape) 5 print("數組a元素的總個數:",a.size) 6 print("數組a元素的數據類型:",a.dtype) 7 print("數組a元素的字節大小:",a.itemsize) 8 print("數組a元素的緩存區地址:",a.data) 9 print("數組a元素的迭代器:",a.flat) 10 print("數組a的元素:\n",a)
3. ndarray類型的形態操作方法
操作方法 |
說明 |
ndarray.reshape(n, m) |
返回一個維度為(n, m)的數組副本 |
ndarray.resize(new_shape) |
修改數組的維度大小 |
ndarray.swapaxes(ax1, ax2) |
調換數組ax1維度與ax2維度,返回調換后的數組 |
ndarray.flatten() |
對數組進行降維,返回一維數組 |
ndarray.ravel() |
對數組進行降維,返回數組的一個視圖 |
1 import numpy as np 2 a = np.arange(20) 3 print('(1) 創建一維數組a:\n',a) 4 b = a.reshape(2,10) 5 print('(2) 由a創建(2,10)的數組b:\n',b) 6 a.resize(4,5) 7 print('(3) 修改數組a為(4,5):','Shape of a:',a.shape,'\n',a) 8 c = a.swapaxes(0,1) 9 print('(4) 調換數組a第1維度與第2維度得到數組c:(5,4)','Shape of c:',c.shape,'\n',c) 10 d = a.flatten() 11 print('(5) 對數組a降維,得到一維數組d:','Shape of d:',d.shape,'\n',d) 12 e = a.ravel() 13 print('(6) 對數組a降維,得到數組a的視圖e','Shape of e:',e.shape,'\n',e)
4. ndarray類型的索引與切片方法
方法 |
說明 |
x [i] |
索引數組x的第i個元素 |
x [-i] |
從后往前索引數組x的第i個元素 |
x [n : m] |
從前往后索引數組x,不包含第m個元素 |
x [-m : -n] |
從后往前索引數組x,結束位置為n |
x [n : m: i] |
以i為步長索引數組x |
1 import numpy as np 2 a = np.arange(8) 3 print('a:',a) 4 print('a[4]:',a[4]) 5 print('a[-6:-3]:',a[-6:-3]) 6 print('a[1:6:2]:',a[1:6:2])
5. ndarray類型的算術運算函數
函數 |
說明 |
np.add(x1, x2 [,y]) |
y = x1 + x2 |
np.subtract(x1, x2 [,y]) |
y = x1 - x2 |
np.multiply(x1, x2 [,y]) |
y = x1 * x2 |
np.divide(x1, x2 [,y]) |
y = x1 / x2 |
np.floor_divide(x1, x2 [,y]) |
y = x1 // x2 |
np.negative(x [,y]) |
y = -x |
np.power(x1, x2 [,y]) |
y = x1 ** x2 |
np.remainder(x1, x2 [,y]) |
y = x1 % x2 |
1 import numpy as np 2 A1 = np.arange(1,9) 3 A2 = np.arange(1,30,4) 4 5 print('A1:',A1) 6 print('A2:',A2) 7 print('A2-A1:',np.subtract(A2,A1)) 8 print('A2//A1:',np.floor_divide(A2,A1)) 9 print('A2%A1:',np.remainder(A2,A1))
6. ndarray類型的比較運算函數
函數 |
說明 |
np.equal(x1, x2 [,y]) |
y = x1 == x2 |
np.not_equal(x1, x2 [,y]) |
y = x1 != x2 |
np.less(x1, x2 [,y]) |
y = x1 < x2 |
np.less_equal(x1, x2 [,y]) |
y = x1 <= x2 |
np.greater(x1, x2 [,y]) |
y = x1 > x2 |
np.greater_equal(x1, x2 [,y]) |
y = x1 >= x2 |
根據條件判斷輸出x或y |
1 import numpy as np 2 A1 = np.arange(1,9) 3 A2 = np.arange(1,30,4) 4 5 print('A1:',A1) 6 print('A2:',A2) 7 print('A1 != A2:',np.not_equal(A1,A2)) 8 print('A1 <= A2:',np.less_equal(A1,A2)) 9 print('Use of where_1:',np.where(A1>=5,'Y','N')) 10 print('Usage as much of where:{}'.format('Y' if A1[3]>=5 else 'N'))
7. ndarray類型的其他運算函數
函數 |
說明 |
np.abs(x) |
返回數組x每個元素的絕對值 |
np.sqrt(x) |
返回數組x每個元素的平方根 |
np.square(x) |
返回數組x每個元素的平方 |
np.sign(x) |
返回數組x每個元素的符號:1(+)、0、-1(-) |
np.ceil(x) |
返回大於或等於數組x每個元素的最小值 |
np.floor(x) |
返回小於或等於數組x每個元素的最大值 |
np.rint(x [,out]) |
返回數組x每個元素最接近的整數 |
np.exp(x [,out]) |
返回數組x每個元素的指數值 |
np.log(x) / np.log2(x) / np.log10(x) |
返回數組x每個元素相應的對數(e、2、10) |
1 import numpy as np 2 A1 = np.arange(1,9) 3 A2 = np.arange(1,30,4) 4 5 print('A1:',A1) 6 print('A2:',A2) 7 print('A2的平方根:',np.sqrt(A2)) 8 print('A1的平方:',np.sqrt(A1)) 9 print('A2 2的對數:',np.log2(A2))