Numpy的隨機數函數子庫random
隨機函數
- np.random.rand(d0,d1,d2…dn) #根據d0-dn創建隨機數數組,浮點數,【0,1】,均勻分佈
import numpy as np
a = np.random.rand(3, 4, 5)
"""
[[[0.62119077 0.50544267 0.79328769 0.76904705 0.43101472]
[0.69268866 0.49179053 0.63663089 0.26708627 0.13873415]
[0.84486227 0.601882 0.99763786 0.41272425 0.02947593]
[0.45581323 0.97598648 0.40827919 0.87245905 0.13007735]]
[[0.36194688 0.41855146 0.29031143 0.50942378 0.37299241]
[0.22314756 0.76366189 0.48600215 0.42286961 0.00478407]
[0.99568233 0.01815499 0.15259891 0.67368962 0.5686784 ]
[0.59087703 0.16047537 0.23636265 0.06384284 0.11472278]]
[[0.00758199 0.71122419 0.49220056 0.85470059 0.59890024]
[0.6260051 0.84953002 0.27433645 0.34114377 0.03269958]
[0.33912012 0.78078661 0.62618093 0.04883337 0.36869345]
[0.90905284 0.5336962 0.02463982 0.89208456 0.38997023]]]
"""
- np.random.randn(d0,d1,d2…dn) # #根據d0-dn創建隨機數數組,標準均勻分佈
import numpy as np
b = np.random.randn(3, 4, 5)
"""
[[[-0.28568169 0.97870388 2.28376916 -0.18592829 -2.50578681]
[-0.59108691 -0.93756367 0.60452133 0.80059328 0.34137422]
[-1.97934977 -0.14234201 -1.86356932 -1.7448813 -0.64238682]
[-0.03598771 0.29326574 -0.6724721 0.43015049 -0.96294974]]
[[ 0.81606232 0.12444557 -0.51209858 -0.88203441 0.24987883]
[ 0.9681933 -0.26149072 -0.09583296 -0.60916996 -0.81342343]
[ 0.4168874 -1.54920211 -0.66567543 1.81500985 -1.10456897]
[-0.4482189 0.81929212 1.6458828 0.28043981 -0.46432575]]
[[ 0.70684786 0.77572485 -2.24412319 0.02892378 -0.98637502]
[ 0.8190989 -1.28342055 -0.95037927 0.85858093 0.39930805]
[ 2.83436122 1.11412938 -1.42637114 1.6741312 0.48817181]
[ 1.56650551 -0.24153299 0.45532935 0.42322118 0.44615081]]]
"""
- np.random.randint(low[,high,shape])根據shape創建隨機整數數組,範圍是[low,high]
import numpy as np
c = np.random.randint(100, 200, (3,4))
"""
[[184 135 159 137]
[105 169 119 115]
[148 101 102 183]]
"""
- np.random.seed(s) #隨機數種子,s是給定的種子
import numpy as np
np.random.seed(10)
d = np.random.randint(100,200,(3,4))
np.random.seed(10)
e = np.random.randint(100,200,(3,4))
print("d",d, )
print("e",e)
"""
d [[109 115 164 128]
[189 193 129 108]
[173 100 140 136]]
e [[109 115 164 128]
[189 193 129 108]
[173 100 140 136]]
"""
- np.random.shuffle(a) #根據數組a的第1軸進行隨排列,改變數組x
import numpy as np
a = np.random.randint(100,200,(3,4))
print(a)
np.random.shuffle(a)
print(a)
"""
[[122 121 138 176]
[166 179 122 176]
[144 111 149 104]]
[[166 179 122 176]
[122 121 138 176]
[144 111 149 104]]
"""
- np.random.permutation(a) #根據數組a的第1軸產生一個新的亂序數組,不改變數組x
import numpy as np
a = np.random.randint(100,200,(3,4))
print(a)
np.random.permutation(a)
print(a)
"""
[[188 121 127 126]
[108 112 197 126]
[142 118 103 188]]
[[188 121 127 126]
[108 112 197 126]
[142 118 103 188]]
"""
- np.random.choice(a,[,size,replace,p]) #從一維數組a中以概率p抽取元素,形成size形狀新數組replace表示是否重用元素,默認爲false
import numpy as np
a = np.random.randint(100,200,(8,))
print("a",a)
b = np.random.choice(a,(3,2 ))
print("b",b)
c = np.random.choice(a, (3,2), replace=False)
print("c",c)
d = np.random.choice(a, (3,2), p = a/np.sum(a))
print("d",d )
"""
a [101 173 173 169 147 157 116 188]
b [[173 169]
[169 147]
[188 169]]
c [[147 157]
[173 188]
[101 116]]
d [[173 116]
[157 157]
[169 169]]
"""
- np.random.uniform(low,high,size) #產生具有均勻分佈的數組,low起始值,high結束值,size形狀
import numpy as np
u = np.random.uniform(0,10,(3,4))
print(u)
"""
[[4.54235161 6.98802164 8.72441114 8.27926562]
[9.55335138 5.96388354 2.14839029 5.75897301]
[6.71560917 6.15057283 9.47250932 7.87728838]]
"""
- np.random.normal(loc,scale,size) #產生具有正態分佈的數組,loc均值,scale標準差,size形狀
import numpy as np
n = np.random.normal(10, 5, (3,4))
print(n)
"""
[[ 5.513402 10.60781272 4.04864796 11.15889479]
[ 3.87908004 16.23211271 5.93647727 4.54703552]
[ 0.79092565 8.86702914 20.78301817 14.77291042]]
"""
- np.random.poisson(lam,size) #產生具有泊松分佈的數組,lam隨機事件發生率,size形狀
import numpy as np
p = np.random.poisson(0.3,(3,4))
print(p)
"""
[[1 0 0 1]
[0 1 0 1]
[2 0 0 1]]
"""
Numpy的統計函數
- np.sum(a, axis=None) #根據給定軸axis計算數組a相關元素之和,axis整數或元組
- np.mean(a, axis=None) #根據給定軸axis計算數組a相關元素的期望axis整數或元組
- np.average(a, axis=None , weight=None)#根據給定軸axis計算數組a相關元素的加權平均值
- np.std(a, axis=None) #根據給定軸axis計算數組a相關元素的標準差
- np.var(a, axis=None) #根據給定軸axis計算數組a相關元素的方差
- np.min(a) #計算數組a的元素最小值
- np.max(a) #計算數組a的元素最大值
- np.argmin(a) #計算數組a中元素最小值的降一維後下標
- np.argmax(a) #計算數組a中元素最大值的降一維後下標
- np.unravel_index(index, shape) #根據shape將一維下標index轉換成多維下標
- np.ptp(a) #計算數組a中元素最大值與最小值的差
- np.median(a) #計算數組a中元素的中位數(中值)
import numpy as np
a = np.arange(15).reshape(3,5)
print("a",a)
print("np.sum:求和", np.sum(a))
print("np.mean:計算數組a相關元素的期望axis整數或元組",np.mean(a,axis=1))
print("np.average:加權平均值",np.average(a, axis=0, weights=[10,5,1]))
print("np.std:標準差",np.std(a))
print("np.var:方差",np.var(a))
print("np.max:最大值",np.max(a))
print("np.argmax:最大值下標索引",np.argmax(a))
print("np.min:最小值",np.min(a))
print("np.argmin:最小值下標索引",np.argmin(a))
print("np.unravel_index:將一維轉換爲多維",np.unravel_index(np.argmax(a), a.shape))
print("np.ptp:最大值與最小值的差",np.ptp(a))
print("np.median中位數",np.median(a))
"""
a [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
np.sum:求和 105
np.mean:計算數組a相關元素的期望axis整數或元組 [ 2. 7. 12.]
np.average:加權平均值 [2.1875 3.1875 4.1875 5.1875 6.1875]
np.std:標準差 4.320493798938574
np.var:方差 18.666666666666668
np.max:最大值 14
np.argmax:最大值下標索引 14
np.min:最小值 0
np.argmin:最小值下標索引 0
np.unravel_index:將一維轉換爲多維 (2, 4)
np.ptd:最大值與最小值的差 14
np.median中位數 7.0
"""
Numpy的梯度函數
np.gradient(f) #計算數組f 中的元素的梯度,當f爲多維時,返回每一個維度的梯度
梯度:連續值之間的變化率,即斜率
import numpy as np
a = np.random.randint(0, 20, (5))
print("np.gradient:",np.gradient(a))
"""
np.gradient: [11. 7.5 -3. -1. 8. ]
"""