矩陣計算庫
numpy庫的使用是sklearn庫和opencv庫的基礎,主要用於矩陣的計算。
Numpy 的主要用途是以數組的形式進行數據操做。機器學習中大多數操做都是數學操做,而 Numpy 使這些操做變得簡單數組
1.建立Numpy數組對象
Numpy 的數值類型其實是 dtype 對象的實例,並對應惟一的字符。
包括 np.bool_ ,np.int32,np.float32等。機器學習
ndarray.ndim 秩,即軸的數量或維度的數量
ndarray.shape 數組的維度,對於矩陣,n行m列
ndarray.size 數組元素的總個數,至關於 .shape 中n*m的值
ndarray.dtype ndarray 對象的元素類型學習
例:spa
data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] a = np.array(data) #一維數組,20 個數 a = np.linspace(0,20, 20) #一維數組,將 0-20 等分爲 20 個數字 a = np.arange(20) #簡潔方式 b = a.reshape(4,5) #將一維數組 a 轉換爲維數(4,5)的數組 c = a.reshape(2,5,2) #將一維數組 a 轉換爲維數(2,5,2)的數組
2.訪問數組
控制遍歷順序code
for x in np.nditer(a, order='F'): 列序優先; for x in np.nditer(a.T, order='C'): 行序優先;
例:對象
a = np.arange(24) a = a.reshape(3,8) a[2,3] #提取數組 a 中行 2 列 3 的數值 a[2,3] = 100 #修改數組 a 行 2 列 3 的數值
a[1:3,3:7] #提取數組 a 中 1~2 行,3~6 列的子數組blog
**#[[11 12 13 14]** **# [20 20 21 22]]**
a[1:3,3:7] = np.zeros((2,4)) #將數組 a 中 1~2 行,3~6 列 的數值置換爲 0索引
**#[[ 0 1 2 3 4 5 6 7]** **# [ 8 9 10 0 0 0 0 15]** **# [16 17 18 0 0 0 0 23]]**
a[[0,1],[0,2]] = -1 #將數組 a 中(0,0),(1,2)兩個位置的數值置換爲-1數學
**#[[-1 1 2 3 4 5 6 7]** **# [ 8 9 -1 0 0 0 0 15]** **# [16 17 18 0 0 0 0 23]]**
3.對數組進行切片與拼接
Numpy 數組能夠像Python列表同樣被索引,切片和迭代。
也能夠在多維數組上作一樣的操做,只需使用逗號分隔便可。
例:it
a = np.arange(24) a.reshape(3,8) b = np.copy(a) a[0][0] = 100 c = np.hstack((a,b)) #沿 1 維,將 a,b 拼接成一個新數組 c = np.concatenate ((a,b), axis=1) #沿 1 維,將 a,b 拼接成一個新數組 #[[100, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7], #[ 8, 9, -1, 0, 0, 0, 0, 15, 8, 9, 10, 11, 12, 13, 14, 15], #[16, 17, 18, 0, 0, 0, 0, 23, 16, 17, 18, 19, 20, 21, 22, 23]]
4.對數組元素進行查找
例:
a[1:3,3:7] = np.zeros((2,4)) np.where(a==0) #得到符合條件的行列位置 #(array([1, 1, 1, 1, 2, 2, 2, 2]), array([3, 4, 5, 6, 3, 4, 5, 6])) #index b[np.where(a==0)] #數組 b 在對應符合條件 a 位置上的數值 #array([11, 12, 13, 14, 19, 20, 21, 22]) #value np.where(a == 0, 1, 0) #等於0的位置,輸出 1;不等於0位置,輸出0 #array([[0, 0, 0, 0, 0, 0, 0, 0], **# [0, 0, 0, 1, 1, 1, 1, 0],** **#[0, 0, 0, 1, 1, 1, 1, 0]])**
5.對數組進行數學計算和代數運算
例:
#[[ 0, 1, 2, 3, 4, 5, 6, 7], #[ 8, 9, 10, 11, 12, 13, 14, 15], #[16, 17, 18, 19, 20, 21, 22, 23]] np.sum(b,axis=0) #列求和 #array([24, 27, 30, 33, 36, 39, 42, 45]) np.sum(b,axis=1) #行求和 #array([ 28, 92, 156]) np.sum(b) #求和 #276
完畢!
技術交流羣:887934385