numpy 随机数
總體來說,numpy.random模塊分為四個部分,對應(yīng)四種功能:
-
簡單隨機數(shù): 產(chǎn)生簡單的隨機數(shù)據(jù),可以是任何維度
-
排列:將所給對象隨機排列
-
分布:產(chǎn)生指定分布的數(shù)據(jù),如高斯分布等
-
生成器:種隨機數(shù)種子,根據(jù)同一種子產(chǎn)生的隨機數(shù)是相同的
以下是詳細內(nèi)容以及代碼實例:(以下代碼默認(rèn)已導(dǎo)入numpy:import numpy as np ) -
生成器
電腦產(chǎn)生隨機數(shù)需要明白以下幾點:
(1)隨機數(shù)是由隨機種子根據(jù)一定的計算方法計算出來的數(shù)值。所以,只要計算方法一定,隨機種子一定,那么產(chǎn)生的隨機數(shù)就不會變。
(2)只要用戶不設(shè)置隨機種子,那么在默認(rèn)情況下隨機種子來自系統(tǒng)時鐘(即定時/計數(shù)器的值)
(3)隨機數(shù)產(chǎn)生的算法與系統(tǒng)有關(guān),Windows和Linux是不同的,也就是說,即便是隨機種子一樣,不同系統(tǒng)產(chǎn)生的隨機數(shù)也不一樣。
numpy.random 設(shè)置種子的方法有:
np.random.seed(1234) #設(shè)置隨機種子為1234
6. 簡單隨機數(shù)
代碼示例
(1) np.random.rand(2,3) #產(chǎn)生2行三列均勻分布隨機數(shù)組
Out[7]:
array([[ 0.35369993, 0.0086019 , 0.52609906],[ 0.31978928, 0.27069309, 0.21930115]])(2)In [8]: np.random.randn(3,3) #三行三列正態(tài)分布隨機數(shù)據(jù)
Out[8]:
array([[ 2.29864491, 0.52591291, -0.80812825],[ 0.37035029, -0.07191693, -0.76625886],[-1.264493 , 1.12006474, -0.45698648]])
(3)In [9]: np.random.randint(1,100,[5,5]) #(1,100)以內(nèi)的5行5列隨機整數(shù)
Out[9]:
array([[87, 69, 3, 86, 85],[13, 49, 59, 7, 31],[19, 96, 70, 10, 71],[91, 10, 52, 38, 49],[ 8, 21, 55, 96, 34]])
(4)In [10]: np.random.random(10) #(0,1)以內(nèi)10個隨機浮點數(shù)
Out[10]:
array([ 0.33846136, 0.06517708, 0.41138166, 0.34638839, 0.41977818,0.37188863, 0.2508949 , 0.89923638, 0.51341298, 0.71233872])
(5)In [11]: np.random.choice(10) #[0,10)內(nèi)隨機選擇一個數(shù)
Out[11]: 7
- 分布
numpy.random模塊提供了產(chǎn)生各種分布隨機數(shù)的API:
代碼示例
(1)正態(tài)分布
import numpy as np
import matplotlib.pyplot as pltmu = 1 #期望為1
sigma = 3 #標(biāo)準(zhǔn)差為3
num = 10000 #個數(shù)為10000rand_data = np.random.normal(mu, sigma, num)
count, bins, ignored = plt.hist(rand_data, 30, normed=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (bins - mu)**2 / (2 * sigma**2)), linewidth=2, color='r')
plt.show()
4. 排列
代碼
(1)正態(tài)分布
import numpy as np
rand_data = np.random.randint(1, 10, (3, 4))
print(rand_data)
np.random.shuffle(rand_data)
print(rand_data)out:
[[4 4 4 8][5 6 8 2][1 7 6 6]]
[[4 4 4 8][1 7 6 6][5 6 8 2]](按照行打亂了,也就是交換了行)
總結(jié)
- 上一篇: lightgbm保存模型参数
- 下一篇: lightgbm 决策树 可视化 gra