Numpy 為 Numerical Python縮寫,最大特色為將多維陣列運算交給底層C或Fortran程式碼處理,改善Python直譯語言運算速度慢的缺點。Python加上Numpy,讓使用者擁有與MATLAB相似的矩陣處理與向量化運算。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式函式庫。
1. Numpy相關指令
A. 載入Numpy套件: import numpy as np
B. 查詢目前使用版本: np.__version__
C. 查閱套件內容: np.info(np)/help(np)
D. 查詢套件中某一函數: np.lookfor(‘function_name’)
2. Numpy 屬性
.ndim: 維度、階、軸
.shape: 維度(m*n)
.size: 元素個數
.dtype: 數據型態
.itemsize: 元素大小
.nbytes: 陣列大小(itemsize*size)
.data: 記憶體配置
.flags: 記憶體旗標
.strides: 每一維度元組
.T: 轉置
.real: 實部
.imag: 虛部
.flat: 一維跌代器
.array(): 產生數列,輸出為array()
.matrix(): 產生矩陣,輸出為matrix()
3. Numpy 建立陣列
.array([]): 建立任意矩陣
.zeros((m, n)): 建立0矩陣
.ones((m, n)): 建立1矩陣
.eye(m)/.identity(m)/.diag([1, 1, 1]): 建立單位矩陣
.empty(m): 建立未初始化矩陣
.full((m, n), x): 建立滿矩陣
.arange(m): 建立有序陣列
.linspace(start, stop, m): 有序陣列
.logspace(start, stop, m): 對數有序陣列
4. Numpy 數列的元素操作方法
A. 數列切片,存取子數列、子矩陣
使用[:]做為切片存取。一為陣列array[start:stop:step];二維陣列array[startr:stopr:stepr, startc:stopc:stepc]
B. 數列串接.concatenate()
一維數列可以直接串接;二維數列要指定軸的方向;不同維度的串接可以使用,.vstack()、.row_stack():從列串接;.hstack()、.column_stack():從行串接
C. 數列分割.split()、.vsplit()、.hsplit()
一維數列可以直接分割;二維數列則透過.vsplit()、.hsplit()
D. 數列重塑.reshape()
使用者可以自由變更數列的shape,但是變更前後元素數目要相同。
E. 數列排序
.sort()用於排序、.argsort()可得排序之索引、.partition()可進行部分排序。
5. Numpy向量化運算
A. 算術運算
np.add(a, b): a+b
np.substract(a, b): a-b
np.negative(a): -a
np.multiply(a, b): a*b
np.divide(a, b): a/b
np.floor_divide(a, b): a//b
np.power(a, b): a**b
np.mod(a, b): a%b
B. 邏輯運算
np.equal(a, b): a==b
np.not_equal(a, b): a!=b
np.less(a, b): a<b
np.less_equal(a, b): a≤b
np.greater(a, b): a>b
np.greater_equal(a, b): a≥b
6. Numpy隨機亂數
.random.randn(m)/(m,n): 建立[0,1]隨機變數陣列
.random.normal(size=m): 建立常態分佈隨機陣列
.random.uniform(size=m): 建立均勻分佈隨機陣列
.random.randint(x, y, (m, n)): 建立隨機整數陣列
參考維基百科與《Python 程式設計學習經典》