Numpy的隨機函數

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. ]
"""
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章