python基礎 - numpy

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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章