欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?NumPy隨機(jī)抽模塊介紹及方法

 更新時間:2022年09月06日 11:21:16   作者:飛Link  
這篇文章主要介紹了Python?NumPy隨機(jī)抽模塊介紹及方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

1. 隨機(jī)數(shù)

np.random.random()是最常用的隨機(jī)數(shù)生成函數(shù),該函數(shù)生成的隨機(jī)數(shù)隨機(jī)均勻分布于[0, 1)區(qū)間。如果不提供參數(shù),np.random.random()函數(shù)返回一個浮點(diǎn)型隨機(jī)數(shù)。np.random.random()函數(shù)還可以接受一個整型或元組參數(shù),用于指定返回的浮點(diǎn)型隨機(jī)數(shù)數(shù)組的結(jié)構(gòu)(shape)。也有很多人習(xí)慣使用np.random.rand()函數(shù)生成隨機(jī)數(shù),其功能和np.random.random()函數(shù)一樣,知識np.random.rand()函數(shù)不接受元組參數(shù),必須要寫成兩個整型參數(shù)

import numpy as np

print(np.random.random())
print(np.random.random(2))
print(np.random.random((2,3)))

np.random.randint()是另一個常用的隨機(jī)數(shù)生成函數(shù),該函數(shù)生成的隨機(jī)整數(shù)均勻分布于[low, high)區(qū)間。如果省略low參數(shù),則默認(rèn)low的值等于0。np.random.randint()函數(shù)還有一個默認(rèn)參數(shù)size,用于指定返回的整型隨機(jī)數(shù)數(shù)組的結(jié)構(gòu)(shape)

print(np.random.randint(10))
print(np.random.randint(10, size=5))
print(np.random.randint(10, size=(2,5)))
print(np.random.randint(10, 100, size=(2,5)))

2. 隨機(jī)抽樣

隨機(jī)抽樣是從指定的有序列表中隨機(jī)抽取指定數(shù)量的元素。隨機(jī)抽樣的應(yīng)用比較廣泛,如產(chǎn)品抽檢、抽簽順序等。NumPy的隨機(jī)抽樣函數(shù)是np.random.choice(),其原型如下

np.random.choice(a, size=None, replace=True, p=None)

參數(shù)a表示待抽樣的全體樣本,它值接受整數(shù)或一維的數(shù)組(列表)。參數(shù)a如果是整數(shù),相當(dāng)于將數(shù)組np.arange(a)作為全體樣本。參數(shù)size用于指定返回抽樣結(jié)果數(shù)組的結(jié)構(gòu)(shape)。參數(shù)replace用于指定是否允許多次抽取同一個樣本,默認(rèn)為允許。參數(shù)p是和全體樣本集合等長的權(quán)重數(shù)組,用于指定對應(yīng)樣本被抽中的概率。

import numpy as np

print(np.random.choice(1,5)) # 抽簽樣本只有1個元素0,抽取5次
print(np.random.choice(['a','b','c'], size=(3,5), p=[0.5,0.25,0.25])) # 指定權(quán)重
print(np.random.choice(np.arange(100), size=(2,5), replace=False)) # 不允許重復(fù)

3. 正態(tài)分布

使用np.random.randn()函數(shù)是最簡單的生成標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)的方法。np.random.randn()函數(shù)用于生成均值為0、標(biāo)準(zhǔn)差為1的正態(tài)分布(標(biāo)準(zhǔn)正態(tài)分布)的隨機(jī)數(shù)、該函數(shù)可以接受一個或兩個整型參數(shù),用來指定返回的符合標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)數(shù)組的結(jié)構(gòu)(shape)

import numpy as np

print(np.random.randn()) # 標(biāo)準(zhǔn)正態(tài)分布,均值為0,標(biāo)準(zhǔn)差為1
print(np.random.randn(5))
print(np.random.randn(2,5))

如果需要生成非標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù),則應(yīng)該使用np.random.normal()函數(shù)。np.random.nomal()函數(shù)默認(rèn)生成均值為0、標(biāo)準(zhǔn)差為1的正態(tài)分布隨機(jī)數(shù)。參數(shù)loc用于指定均值,參數(shù)scale用于指定標(biāo)準(zhǔn)差,參數(shù)size用于指定返回的符合正態(tài)分布的隨機(jī)數(shù)數(shù)組的結(jié)構(gòu)(shape)。從下面的代碼可以看出,和使用默認(rèn)標(biāo)準(zhǔn)差相比,指定標(biāo)準(zhǔn)差為0.2時,數(shù)據(jù)分布更加靠近均值

print(np.random.normal()) # 默認(rèn)均值為0,標(biāo)準(zhǔn)差為1
print(np.random.normal(loc=2, size=5)) # 參數(shù)loc指定均值為2
print(np.random.normal(loc=2, scale=0.2, size=(2,5))) # 參數(shù)loc指定均值為2,參數(shù)scale指定標(biāo)準(zhǔn)差為0.2

4. 偽隨機(jī)數(shù)的深度思考

計算機(jī)程序或編程語言中的隨機(jī)數(shù)都是偽隨機(jī)數(shù)。因?yàn)橛嬎銠C(jī)硬件是確定的,代碼是固定的,算法是準(zhǔn)確的,通過這些確定的、固定的、準(zhǔn)確的東西不會產(chǎn)生真正的隨機(jī)數(shù),除非引入這個封閉系統(tǒng)以外的因素。計算機(jī)系統(tǒng)的隨機(jī)算法一般使用線性同余或平方取中的算法,通過一個種子(通常用時鐘代替)產(chǎn)生。這意味著,如果知道了種子和已經(jīng)產(chǎn)生的隨機(jī)數(shù),就可能獲得接下來隨機(jī)數(shù)序列的信息,這就是偽隨機(jī)數(shù)的可預(yù)測性

NumPy隨機(jī)數(shù)函數(shù)內(nèi)部使用了一個偽隨機(jī)數(shù)生成器,這個生成器每次實(shí)例化時都需要一個種子(整數(shù))完成初始化。如果兩次初始化的種子相同,則每次初始化后產(chǎn)生的隨機(jī)數(shù)序列就完全一致。np.random.seed()函數(shù)可以指定偽隨機(jī)數(shù)生成器的初始化種子

import numpy as np

np.random.seed(12345) # 使用'12345'隨機(jī)種子初始化偽隨機(jī)數(shù)生成器
print(np.random.random(5))
print(np.random.random((2,3)))

np.random.seed(12345) # 再次使用'12345'隨機(jī)種子初始化偽隨機(jī)數(shù)生成器
print(np.random.random(5)) # 和上面完全一致
print(np.random.random((2,3))) # 和上面完全一致

從上述代碼匯總可以看出,只要指定相同的種子,接下來的隨機(jī)序列就完全一致。這意味著,只有從外部引入真正的隨機(jī)因子(如天空云朵的形狀、鄰居家無線網(wǎng)絡(luò)信號的強(qiáng)度等)作為種子,才可以得到真正的隨機(jī)數(shù)

此外,NumPy還提供了隨機(jī)數(shù)生成器,可以直接操作這個生成器來生成隨機(jī)數(shù)

r = np.random.RandomState(12345) # 使用隨機(jī)數(shù)生成器也同樣
print(r.random(5)) # 和上面完全一致
print(r.random((2,3))) # 和上面完全一致

到此這篇關(guān)于Python NumPy隨機(jī)抽模塊介紹及方法的文章就介紹到這了,更多相關(guān)Python NumPy 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python計算N天之后日期的方法

    python計算N天之后日期的方法

    這篇文章主要介紹了python計算N天之后日期的方法,涉及Python操作日期的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-03-03
  • python函數(shù)運(yùn)行內(nèi)存時間等性能檢測工具

    python函數(shù)運(yùn)行內(nèi)存時間等性能檢測工具

    這篇文章主要為大家介紹了python函數(shù)運(yùn)行內(nèi)存時間等性能檢測工具,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python使用captcha庫制作帶參數(shù)輸入驗(yàn)證碼案例

    Python使用captcha庫制作帶參數(shù)輸入驗(yàn)證碼案例

    這篇文章主要介紹了Python使用captcha庫制作驗(yàn)證碼,帶參數(shù)輸入,本文通過實(shí)例案例解析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Django中引入bootstrap的詳細(xì)圖文詳解

    Django中引入bootstrap的詳細(xì)圖文詳解

    Django是基于Python的一個Web開發(fā)框架,可以實(shí)現(xiàn)前端和后臺間的數(shù)據(jù)連接,下面這篇文章主要給大家介紹了關(guān)于Django中引入bootstrap的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • python中查看.db文件中表格的名字及表格中的字段操作

    python中查看.db文件中表格的名字及表格中的字段操作

    這篇文章主要介紹了python中查看.db文件中表格的名字及表格中的字段操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python?OpenCV中cv2.minAreaRect實(shí)例解析

    Python?OpenCV中cv2.minAreaRect實(shí)例解析

    minAreaRect的主要作用是獲取一個多邊形(就是有很多個點(diǎn)組成的一個圖形)的最小旋轉(zhuǎn)矩形(旋轉(zhuǎn)矩形就是我們平常見到的水平框帶了角度),這篇文章主要給大家介紹了關(guān)于Python?OpenCV中cv2.minAreaRect的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python中xmltodict對xml的操作方式

    Python中xmltodict對xml的操作方式

    這篇文章主要介紹了Python中xmltodict對xml的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 如何利用python實(shí)現(xiàn)windows的批處理及文件夾操作

    如何利用python實(shí)現(xiàn)windows的批處理及文件夾操作

    最近工作中需要幾個腳本運(yùn)行其他程序,幾乎像一個Windows批處理文件,這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)windows的批處理及文件夾操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • python selenium 對瀏覽器標(biāo)簽頁進(jìn)行關(guān)閉和切換的方法

    python selenium 對瀏覽器標(biāo)簽頁進(jìn)行關(guān)閉和切換的方法

    今天小編就為大家分享一篇python selenium 對瀏覽器標(biāo)簽頁進(jìn)行關(guān)閉和切換的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python tkinter庫繪制春聯(lián)和福字的示例詳解

    Python tkinter庫繪制春聯(lián)和福字的示例詳解

    馬上要過年了,這篇文章將用到Python中的tkinter庫來寫一副春聯(lián)&福字送給大家。文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的小伙伴可以試一試
    2022-01-01

最新評論