numpy常用隨機數函式

2021-09-11 04:40:58 字數 3820 閱讀 9828

numpy.random模組裡有各種隨機數生成函式,介紹幾個常用的:

randint(low, high=none, size=none, dtype='l')

lowhigh取值範圍,包括下限數值但不包括上限數值,若只有乙個引數,表示取值範圍上限

size生成隨機數的數量或shape,預設時只返回單個隨機數

in [10]

: np.random.randint(

5,size=10)

# 只有乙個範圍引數,表示取值上限

out[10]

: array([3

,2,4

,1,3

,3,0

,2,0

,3])

in [11]

: np.random.randint(5,

10,size=10)

# 兩個範圍引數,表示取值範圍

out[11]

: array([5

,5,7

,7,9

,8,5

,8,9

,9])

in [14]

: np.random.randint(5,

10,(3

,4))

# size為元組,表示生成矩陣的shape

out[14]

: array([[

7,5,

9,9]

,[7,

5,7,

8],[

8,6,

7,9]

])

rand(d0, d1, ..., dn)

randn(d0, d1, ..., dn)

引數為生成的shape

in [21]

: np.random.rand(5,

5)# 5*5的矩陣

out[21]

: array([[

0.57890371

,0.74825882

,0.77334475

,0.28432743

,0.63165005],

[0.08240677

,0.38646131

,0.52298527

,0.37325049

,0.28064731],

[0.56370019

,0.04327205

,0.93787321

,0.14260971

,0.64227087],

[0.87509277

,0.10756811

,0.71438217

,0.68758854

,0.80131041],

[0.63364383

,0.04344815

,0.11854164

,0.74121914

,0.76884027

]]

對於一維陣列隨機打亂資料順序,對於多維陣列隨機打亂0軸的順序

shuffle(x)直接修改物件,不返回值

permutation()不修改物件,返回乙個修改後的新物件

in [38]

: data=np.arange(10)

.reshape(5,

2)# 原物件不修改

in [39]

: data

out[39]

: array([[

0,1]

,[2,

3],[

4,5]

,[6,

7],[

8,9]

])in [40]

: np.random.permutation(data)

# 返回修改後的內容

out[40]

: array([[

2,3]

,[4,

5],[

0,1]

,[6,

7],[

8,9]

])in [41]

: data # 原物件不修改

out[41]

: array([[

0,1]

,[2,

3],[

4,5]

,[6,

7],[

8,9]

])in [42]

: np.random.shuffle(data)

# 無返回值

in [43]

: data # 原物件被修改

out[43]

: array([[

2,3]

,[0,

1],[

8,9]

,[4,

5],[

6,7]

])

從一維陣列裡隨機抽取資料並組成新的陣列

choice(a, size=none, replace=true, p=none)

a若是一維陣列則從該陣列中抽取資料;若是乙個整數,則相當於從np.arange(a)生成的一維陣列中抽取資料

size新陣列的大小或shape

replace是否允許重複,預設true

p抽取概率,shape必須和a相同,每個數字代表a裡相同位置資料被抽取的概率,所有概率值相加必須等於1

in [57]

: data=np.arange(10)

in [58]

: data

out[58]

: array([0

,1,2

,3,4

,5,6

,7,8

,9])

in [59]

: np.random.choice(data,(3

,3))

# 從一維陣列抽取

out[59]

: array([[

8,9,

8],[

4,8,

7],[

5,9,

5]])

in [60]

: np.random.choice(10,

(3,3

))# 第乙個引數10表示np.arange(10)生成的陣列

out[60]

: array([[

9,4,

7],[

1,8,

0],[

5,6,

6]])

in [61]

: np.random.choice(data,(3

,3),replace=

false

)# 不允許重複

out[61]

: array([[

4,6,

8],[

1,5,

0],[

3,7,

2]])

in [62]

: np.random.choice(3,

10,p=

[0.3

,0.2

,0.5])

# 概率p陣列shape必須和a引數相同,概率相加必須等於1

out[62]

: array([0

,1,2

,2,2

,0,2

,2,2

,1], dtype=int64)

NumPy隨機數函式

import numpy as np a np.random rand 3,4,5 每個元素為0 1之間的浮點數 sn np.random randn 3,4,5 每個元素是根據n 0,1 的方式選取出來的浮點數 b np.random randint 100,200,3,4 每個元素為100 20...

NumPy的隨機數函式

numpy的random子庫 np.random.np.random.rand 3,4,5 建立 0,1 之間的3維隨機浮點數陣列,均勻分布 np.random.randn 3,4,5 建立3維隨機數陣列,標準正態分佈 np.random.randint 100,200,3,4 建立 100,200...

NumPy的隨機數函式

rand 格式 np.random.rand d0,d1,dn 說明 根據d0 dn建立隨機數陣列,浮點數,0,1 均勻分布 舉例 np.random.rand 3,5,4 randn 格式 np.random.randn d0,d1,dn 說明 根據d0 dn建立隨機數陣列,標準正態分佈 舉例 n...