Python | Numpy套件基本使用

Kombayar
Nov 11, 2020

--

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 程式設計學習經典》

--

--

Kombayar
Kombayar

Written by Kombayar

I’m a graduate student. Self-teaching coding on Internet, wanted to write some articles to make myself remember the code.

No responses yet