numpy的隨機數函數,numpy的統計函數,numpy的梯度函數
-
numpy的隨機數函數
numpy的random子庫:np.random.*,主要有np.random.rand() np.random.randn() np.random.randint()
-
rand(d0,d1,d2,……,dn) : 根據d0-dn創建隨機數組,浮點數,範圍是[0,1),均勻分佈
a = np.random.rand(2, 3, 4) print(a) """ [[[0.4506612 0.5296636 0.9747625 0.90105177] [0.25850117 0.90704491 0.87144252 0.00418912] [0.69423447 0.690204 0.4432447 0.37734196]] [[0.41056822 0.4220897 0.80819521 0.99022746] [0.61803924 0.93554027 0.3742707 0.94081985] [0.15283965 0.09844152 0.25726209 0.24488101]]] """
-
randn(d0,d1,d2,……,dn) : 根據d0-dn創建隨機數組,標準正態分佈
a = np.random.randn(2, 3, 4) print(a) """ [[0.40633254 0.47173819 0.38729304 0.70714334] [0.46251671 0.07390322 0.57785243 0.2053207 ] [0.48132709 0.84742941 0.8197048 0.47963288]]] """
-
randint(low, high, shape) : 根據shape創建隨機數數組,範圍是[low, high)
a = np.random.randint(5, 10, (2, 3, 4)) print(a) """ [[[5 6 5 7] [7 5 9 5] [6 7 6 5]] [[8 6 7 5] [6 8 5 6] [8 8 7 9]]] """
-
seed(s) : 隨機數種子,s是給定的種子值
np.random.seed(5) a = np.random.randint(5, 10, (2, 3, 4)) print(a) """ [[[8 5 6 5] [9 8 5 5] [9 6 5 8]] [[9 8 6 9] [7 6 6 7] [6 6 6 7]]] """ # 運行兩次結果不變 #當給定的種子值爲4時,數組的值並不會改變
-
shuffle(a): 根據數組a的每一縱列進行隨機排列,數組a發生改變
a = np.random.randint(5, 10, (3, 4)) print(a) """ [[[6 8 7 8] [9 7 7 9] [5 6 6 8]] [[6 6 5 6] [5 7 5 5] [6 8 5 9]]] """ np.random.shuffle(a) print(a) """ [[8 7 8 7] [5 6 5 8] [7 9 5 5]] [[5 6 5 8] [8 7 8 7] [7 9 5 5]] """
-
permutation(a) :根據數組a的每一縱列進行隨機排列,數組a不改變
a = np.random.randint(5, 10, (3, 4)) print(a) """ [[8 7 5 9] [5 9 8 6] [6 6 5 5]] """ b = np.random.permutation(a) print(a) """ [[9 5 7 9] [5 9 5 7] [6 8 6 7]] """ print(b) """ [[5 9 5 7] [6 8 6 7] [9 5 7 9]] """
-
choice(a, size, replace, p):從一維數組a中以概率p抽取元素,形成size形狀的新數組,replace表示是否可以重用元素,默認爲True
a = np.arange(6) print(np.random.choice(a, 2, replace=False, p=a / np.sum(a))) #[2 5] # replace在一維數組中有效
-
uniform(low, high, size) : 產生具有均勻分佈的數組,low起始值,high結束值,size形狀
-
normal(loc,scale,size) : 產生具有正態分佈的數組,loc均值,scale標準差,size形狀
-
poisson(lam,size) : 產生具有泊松分佈的數組,lam隨機事件發生率,size形狀
-
-
-
numpy的統計函數
-
np.sum(a, axis=None) : 根據給定軸axis計算數組a相關元素之和,axis整數或元組。
a = np.arange(15).reshape((3, 5)) print(a) """ [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] """ print(np.sum(a, axis=0)) # [15 18 21 24 27] print(np.sum(a, axis=1)) # [10 35 60]
當axis=None時,np.sum(a)表示數組a的所有元素總和
當axis=0時,表示的是數組a各縱列元素之和
當axis=1時,表示的是數組a各橫列元素之和
-
mean(a, axis=None) :根據給定軸axis計算數組a相關元素的期望,axis整數或元組
a = np.arange(15).reshape((3, 5)) # mean 求取均值 print(np.mean(a))#7.0 print(np.mean(a, axis=0))#[5. 6. 7. 8. 9.]
-
average(a,axis=None,weights=None):根據給定軸axis計算數組a相關元素的加權平均值
print(np.average(a, axis=0, weights=[2, 3, 4])) # [ 6.11111111 7.11111111 8.11111111 9.11111111 10.11111111] # 6.111111111111111是這樣計算出來的: (0 * 2 + 5 * 3 + 4 * 10) / (2 + 3 + 4)
-
std(a, axis=None) : 根據給定軸axis計算數組a相關元素的標準差
-
var(a, axis=None) : 根據給定軸axis計算數組a相關元素的方差
-
min(a) max(a) : 計算數組a中元素的最小值、最大值
-
argmin(a) argmax(a) : 計算數組a中元素最小值、最大值的降一維後下標
-
unravel_index(index, shape) : 根據shape將一維下標index轉換成多維下標
-
ptp(a) : 計算數組a中元素最大值與最小值的差
-
median(a) : 計算數組a中元素的中位數(中值)
-
-
-
numpy的梯度函數
np.gradient(a) :計算數組a中元素的梯度,當a爲多維時,返回每個維度梯度
梯度:連續值之間的變化率,即斜率
XY座標軸連續三個X座標對應的Y軸值:a, b, c,其中,b的梯度是: (c‐a)/2
當a爲一維數組時,
a = np.random.randint(0, 20, (5)) print(a) # [ 5 5 13 6 10] print(np.gradient(a)) # [ 0. 4. 0.5 -1.5 4. ] # 0 : (5-5)/1 # 4. : (10-6)/1 # 0.5: (6-5)/2 # 4. : (13-5)/2
當a爲多維數組時
a = np.arange(12).reshape(2,6) print(a) """ [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]] """ print(np.gradient(a)) """ [array([[6., 6., 6., 6., 6., 6.], [6., 6., 6., 6., 6., 6.]]), array([[1., 1., 1., 1., 1., 1.], [1., 1., 1., 1., 1., 1.]])] """ # 上側表示最外層維度(axis=0)的梯度,下側表示第二層維度(axis=1)的梯度。