不改一行程式碼,輕鬆擁有企業級微服務治理|MSE微服務治理專業版重磅釋出
阿新 • • 發佈:2021-12-02
主要功能:
-
一個多維陣列結構,高效且節省空間
-
無需迴圈對整個陣列進行快速運算的函式
-
線性代數、隨機數生成和傅立葉變換功能
安裝
pip install numpy
引用: import numpy as np
ndarray-多維陣列物件
建立ndarray
np.array(list)
與list的區別:
-
ndarray改值不改大小,陣列間對應位置的元素可進行運算
-
list改大小不改值
比如
a = np.array([i for i in range(10)]) b = [i for i in range(10)] a*3 >> array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27]) b*3 >> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
常用屬性
屬性 | 註釋 |
---|---|
dtype | 陣列中資料型別 |
size | 陣列中元素個數 |
shape | 用元組表示陣列,比如二維陣列是(n*m),n行m列 |
T | 陣列的轉置,比如行變成列,列變成行 |
ndim | 陣列的維數 |
常用方法
方法 | 註釋 |
---|---|
array() | 建立陣列 |
zeros() | 建立全0的陣列 |
ones() | 建立全1的陣列 |
empty() | 建立空陣列(隨機值) |
arange() | 根據資料範圍建立陣列 |
linspace() | 線性建立陣列,範圍資料平均分成n份,步長一致,呈線性遞增或者遞減 |
eye() | 建立線性代數的單位矩陣 |
reshape() | 根據陣列形狀排列陣列 |
索引和切片
多維陣列的索引
列表式寫法:a[2][3]
新式寫法:a[2,3]
多維陣列的切片
新式寫法:a[0:2,0:3]
布林型索引
列表式寫法:list(filter(lambda x:x>5,a))
新式寫法:a[(a>5) & (a%2==0)],加了括號才能當and使用,否則會成為位運算的與
a[(a>5) | (a%2==0)]
底層原理:
-
對每一個元素進行判斷,返回一個布林陣列
-
返回對應位置為True的元素的陣列
a = array([0,1,2,3]) a[[True,False,False,True]] >> array([0,3]) # 只顯示True的元素
花式索引
a[[1,3,4,6,7]]:返回陣列中與其中列表中的陣列一致的元素
多維陣列寫法:a[[1,3],:][:,[1,3]]
通用函式
一元函式
abs,sqrt,exp,log,floor(向下取整),ceil(向上取整),round(四捨五入),trunc(截斷取整),rint(取整),modf(把小數和整數分開儲存),isnan(是否不是數),isinf(是否無窮大)
二元函式
add,substract,multiply,divide,power,mod,maximum,minium(每個對應位置的元素進行比較)
統計
方法 | 描述 |
---|---|
sum() | 求和 |
mean() | 求平均 |
var() | 求方差,表示資料的離散程度,越小越穩定 |
std() | 標準差,越小 |
max() | 最大值 |
min() | 最小值 |
argmax() | 最大值下標 |
argmin() | 最小值下標 |
隨機生成
方法 | 描述 |
---|---|
np.random.randint() | 給定shape產生隨機陣列(0~1) |
np.random.rand() | 給定shape產生隨機整數陣列 |
np.random.choice() | 給定shape產生隨機選擇陣列 |
np.random.uniform() | 給定shape產生隨機陣列 |
np.random.shuffle() | 與random.shuffle()相同 |