Numpy 是 Python 數據科學計算的核心庫,提供了高性能的多維數組對象及處理數組的工具。
使用以下語句導入 Numpy 庫:
import numpy as np
1、創建數組
a = np.array([1, 2, 3])
b = np.array([(1.5, 2, 3), (4, 5, 6)], dtype=float)
c = np.array([[(1.5, 2, 3), (4, 5, 6)], [(3, 2, 1), (4, 5, 6)]], dtype=float)
np.zeros((3, 4)) # 創建值爲0數組
np.ones((2, 3, 4), dtype=np.int16) # 創建值爲1數組
d = np.arange(10, 25, 5) # 創建均勻間隔的數組(步進值)
np.linspace(0, 2, 9) # 創建均勻間隔的數組(樣本數)
e = np.full((2, 2), 7) # 創建常數數組
f = np.eye(2) # 創建2x2單位矩陣
np.random.random((2, 2)) # 創建0-1隨機值的數組
np.empty((3, 2)) # 創建空數組
2、數據類型
np.int64 # 帶符號的64位整數
np.float32 # 標準雙精度浮點數
np.complex # 顯示爲128位浮點數的複數
np.bool # 布爾值:True值和False值
np.object # Python對象
np.string_ # 固定長度字符串
np.unicode_ # 固定長度Unicode
3、數組信息
a.shape # 數組形狀,幾行幾列
len(a) # 數組長度
b.ndim # 幾維數組
e.size # 數組有多少元素
b.dtype # 數據類型
b.dtype.name # 數據類型的名字
b.astype(int) # 數據類型轉換
4、調用幫助信息
np.info(np.ndarray.dtype)
5、運算
(1)比較:
a == b # 對比值
array([[False, True, True], [False, False, False]], dtype=bool)
a < 2 # 對比值
# array([True, False, False], dtype=bool)
np.array_equal(a, b) # 對比數組
a * 2 # 乘法
# array([2, 4, 6])
a + np.array([5, 6, 7])
# array([6, 8, 10])
(2)統計函數:
a.sum() # 數組求和
a.min() # 數組最小值
b.max(axis=0) # 數組最大值,按行 array([4., 5., 6.])
b.cumsum(axis=1) # 數組元素的累加值 array([[ 1.5, 3.5, 6.5], [ 4. , 9. , 15. ]])
a.mean() # 平均數
a.std(b) # 標準差
中位數、相關係數只能用np.func:
np.median(a) # 中位數
np.corrcoef(a) # 相關係數
其餘函數也可以np.func:
np.sum(a)
np.min(a)
np.max(b, axis=0)
np.cumsum(b, axis=1)
np.mean(a)
np.median(a)
np.corrcoef(a)
np.std(b)
(3)基本運算:
g = a - b # 減法 array([[-0.5, 0., 0.], [-3., -3., -3.]])
np.subtract(a, b)
b + a # 加法 array([[2.5, 4., 6.], [5., 7., 9.]])
np.add(b, a)
a / b # 除法 array([[0.66666667, 1., 1.], [0.25, 0.4, 0.5]])
np.divide(a, b)
a * b # 乘法 array([[1.5, 4., 9.], [4., 10., 18.]])
np.multiply(a, b)
np.exp(b) # 冪
np.sqrt(b) # 平方根
np.sin(a) # 正弦
np.cos(b) # 餘弦
np.log(a) # 自然對數
e.dot(f) # 點積 array([[7., 7.], [7., 7.]])
6、數組複製
h = a.view() # 淺拷貝,使用同一數據創建數組視圖
np.copy(a) # 深度拷貝
h = a.copy() # 深度拷貝
7、數組排序
a.sort() # 數組排序
c.sort(axis=0) # 以軸爲依據對數組排序
8、子集、切片、 索引
遍歷和查找同list類似:
a[1] # 2 選擇索引1對應的值
a[0:2] # array([1, 2]) 選擇索引0和1對應的值
二維 Numpy 數組的子集與list不同:
b[:,0] # array([1.5, 4]) b[rows, columns]
c[1,...] # 等同於 [1,:,:]
b[[1, 0, 1, 0],[0, 1, 2, 0]] # 選擇(1,0),(0,1),(1,2) 和(0,0)所對應的值
9、數組操作
(1)轉置數組
i = np.transpose(b)
i.T
(2) 改變數組形狀
b.ravel() # 拉平數組
g.reshape(3, -2) # 改變數組形狀,但不改變數據
b.resize((2,7)) # 返回形狀爲(2,6)的新數組
(3) 添加或刪除值
np.append(h, g) # 追加數據
np.insert(a, 1, 5) # 插入數據 1的位置插入5
np.delete(a, [1, 2]) # 刪除數據 刪除1,2處的數
(4)合併數組
np.concatenate((a, d),axis=0) # array([ 1, 2, 3, 10, 15, 20])
(5) 分割數組
np.hsplit(a, 3) # 縱向分割數組爲3等份 [array([1]), array([2]), array([3])]
np.vsplit(c, 2) # 橫向分割數組爲2等份 [array([[[ 1.5, 2. , 1. ], [ 4. , 5. , 6. ]]]), array([[[ 3., 2., 3.], [ 4., 5., 6.]]])]
(6) 合併數組
np.r_[e, f] # 縱向以行的維度堆疊數組
np.vstack((e, f)) # 縱向以行的維度堆疊數組
# array([[7., 7.],
# [7., 7.],
# [1., 0.],
# [0., 1.]])
np.hstack((e, f)) # 橫向以列的維度堆疊數組
np.column_stack((e, f))
np.c_[e, f] # 橫向以列的維度堆疊數組
# array([[7., 7., 1., 0.],
# [7., 7., 0., 1.]])
10、輸入/輸出
(1)保存與載入磁盤上的文件
np.save('my_array', a)
np.savez('array.npz', a, b)
np.load('my_array.npy')
(2)保存與載入文本文件
np.savetxt("myarray.txt", a, delimiter=" ")
np.loadtxt("myfile.txt")
np.genfromtxt("my_file.csv", delimiter=',')
摘自DataCamp
Learn Python for Data Science Interactively