【NumPy】 之常見運算(min、max、mean、sum、exp、sqrt、sort、乘法、點積、物件拼接/切分)
阿新 • • 發佈:2019-01-06
____tz_zs
之前把 numpy 資料寫在了同一篇部落格裡,發現非常難以查閱,於是按功能切分開來。
運算
- ndarray.min() / np.min(ndarray)
- ndarray.max() / np.max(ndarray)
- ndarray.mean() / np.mean(ndarray)
- ndarray.sum() / np.sum(ndarray)
- np.exp()
- np.sqrt() 開根號
- np.sort() 排序
- np.argsort() 排序的索引
.
# -*- coding: utf-8 -*- """ @author: tz_zs ndarray.min() ndarray.max() ndarray.mean() ndarray.sum() ndarray.argmax() 最大值的索引 np.exp() np.sqrt() 開根號 np.floor() 地板值 np.sort() 排序 np.argsort() 排序的索引 """ import numpy as np n = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]]) print(n.min()) # 5 print(n.max()) # 5 print(n.mean()) # 25.0 print(n.sum()) # 225 # 指定所操作的維度,axis=0 按列,axis=1 按行 print(n.sum(axis=0)) # [60 75 90] print(n.sum(axis=1)) # [ 30 75 120] print('-' * 20) n1 = np.arange(3) print(n1) print(np.exp(n1)) print(np.sqrt(n1)) ''' [0 1 2] [ 1. 2.71828183 7.3890561 ] [ 0. 1. 1.41421356] ''' # np.floor() print('-' * 20) n2 = np.random.random((2, 3)) * 10 n3 = np.floor(n2) print(n2) print(n3) ''' [[ 6.46353334 8.29433697 4.78221334] [ 2.95695022 3.80006904 3.00482368]] [[ 6. 8. 4.] [ 2. 3. 3.]] ''' # np.sort() 排序 print('-' * 20) a = np.array([[4, 3, 5], [1, 6, 1]]) print(a) ''' [[4 3 5] [1 6 1]] ''' b = np.sort(a, axis=1) print(b) ''' [[3 4 5] [1 1 6]] ''' a.sort(axis=1) print(a) ''' [[3 4 5] [1 1 6]] ''' # np.argsort() 排序的索引 print('-' * 20) a2 = np.array([4, 3, 1, 2]) j = np.argsort(a2) print(j) # [2 3 1 0] print(a2[j]) # [1 2 3 4]
·
矩陣乘法
ndarray1 * ndarray2
ndarray1.dot(ndarray2)
np.dot(ndarray1, ndarray2)
# -*- coding: utf-8 -*- """ @author: tz_zs 矩陣乘法 ndarray1 * ndarray2 ndarray1.dot(ndarray2) np.dot(ndarray1, ndarray2) """ import numpy as np # The matrix product can be performed using the dot function or method n1 = np.array([[1, 1], [0, 1]]) n2 = np.array([[2, 0], [3, 4]]) print(n1) print(n2) ''' [[1 1] [0 1]] [[2 0] [3 4]] ''' print(n1 * n2) ''' [[2 0] [0 4]] ''' print(n1.dot(n2)) print(np.dot(n1, n2)) ''' [[5 4] [3 4]] [[5 4] [3 4]] '''
·
dot
numpy.dot(a, b, out=None)
a : 第一個引數,b : 第二個引數,out : 控制輸出的引數
此函式對於一維矩陣,計算的是點積(向量乘法),對於二維矩陣,計算矩陣乘積。
.
拼接/切分 ndarray
拼接 ndarray 物件
- np.hstack() # 橫著拼接
- np.vstack() # 豎著拼接
切分 ndarray 物件
- np.vsplit() # 豎著切
# -*- coding: utf-8 -*- """ @author: tz_zs 拼接 ndarray 物件 np.hstack() # 橫著拼接 np.vstack() # 豎著拼接 切分 ndarray 物件 np.vsplit() 豎著切 """ import numpy as np n1 = np.array([[10, 11], [12, 13]]) n2 = np.array([[20, 21], [22, 23]]) hstack = np.hstack((n1, n2)) # 橫著拼接 print(hstack) ''' [[10 11 20 21] [12 13 22 23]] ''' vstack = np.vstack((n1, n2)) # 豎著拼接 print(vstack) ''' [[10 11] [12 13] [20 21] [22 23]] ''' # np.hsplit() 橫著切 n3 = np.floor(10 * np.random.random((2, 12))) print(n3) ''' [[ 6. 1. 1. 9. 9. 5. 2. 3. 4. 4. 0. 2.] [ 6. 3. 7. 7. 7. 9. 0. 2. 3. 0. 4. 8.]] ''' print(np.hsplit(n3, 3)) ''' [array([[ 6., 1., 1., 9.], [ 6., 3., 7., 7.]]), array([[ 9., 5., 2., 3.], [ 7., 9., 0., 2.]]), array([[ 4., 4., 0., 2.], [ 3., 0., 4., 8.]])] ''' print(np.hsplit(n3, (3, 5))) # 指定切分位置 ''' [array([[ 6., 1., 1.], [ 6., 3., 7.]]), array([[ 9., 9.], [ 7., 7.]]), array([[ 5., 2., 3., 4., 4., 0., 2.], [ 9., 0., 2., 3., 0., 4., 8.]])] ''' # np.vsplit() 豎著切 n4 = n3.T print(n4) ''' [[ 6. 6.] [ 1. 3.] [ 1. 7.] [ 9. 7.] [ 9. 7.] [ 5. 9.] [ 2. 0.] [ 3. 2.] [ 4. 3.] [ 4. 0.] [ 0. 4.] [ 2. 8.]] ''' print(np.vsplit(n4, 3)) ''' [array([[ 6., 6.], [ 1., 3.], [ 1., 7.], [ 9., 7.]]), array([[ 9., 7.], [ 5., 9.], [ 2., 0.], [ 3., 2.]]), array([[ 4., 3.], [ 4., 0.], [ 0., 4.], [ 2., 8.]])] '''
·