numpy.random.choice()函數(shù)詳解
處理數(shù)據(jù)時我們經(jīng)常需要從數(shù)組中隨機抽取元素,這時候我們可以考慮使用np.random.choice()函數(shù)
語法格式
numpy.random.choice(a, size=None, replace=True, p=None)
參數(shù)說明
a:如果a是一維數(shù)組,就表示從這個一維數(shù)組中隨機采樣;如果a是整數(shù),就表示從0到a-1這個序列中隨機采樣
size: 從a中選取size個數(shù)(采樣結(jié)果的數(shù)量,以概率p隨機選取大小為size的數(shù)據(jù))
replace:布爾值,表示是否重用元素,即抽取出來的數(shù)據(jù)是否放回原數(shù)組中,默認為True(抽取出來的數(shù)據(jù)有重復(fù))
p:一個一維數(shù)組,其與數(shù)組a相對應(yīng),表示取數(shù)組a中每個元素的概率,默認p=None表示選取的每個元素的概率相同
1.參數(shù)a
如果參數(shù)a=5,表示在[0, 5)中隨機輸出一個隨機數(shù)
import numpy as np np.random.choice(5) # 3
如果參數(shù)a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen'],表示在['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']中隨機輸出一個隨機數(shù)
import numpy as np a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen'] np.random.choice(a) # 'Shenzhen'
2.參數(shù)size
在[0, 5)內(nèi)輸出3個數(shù)字并組成一維數(shù)組(ndarray)
import numpy as np np.random.choice(5, 3) # array([3, 2, 3])
在['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen']內(nèi)輸出3個值并組成一維數(shù)組(ndarry)
import numpy as np a = ['Guangzhou', 'Beijing', 'Shanghai', 'Shenzhen'] # array(['Shanghai', 'Shenzhen', 'Shanghai'], dtype='<U9') np.random.choice(a, size=3)
3.參數(shù)replace
replace=False表示非放回采樣(不會出現(xiàn)重復(fù)的元素)
import numpy as np # array([4, 0, 3]) np.random.choice(a=5, size=3, replace=False, p=None)
replace=True表示放回采樣(會出現(xiàn)重復(fù)的元素)
import numpy as np # array([1, 0, 0]) np.random.choice(a=5, size=3, replace=True, p=None)
4.參數(shù)p
參數(shù)p實際是個數(shù)組,數(shù)組元素的個數(shù)應(yīng)該與指定的參數(shù)a相同,用來規(guī)定選取a中每個元素的概率,默認概率相同,我們可以使用參數(shù)p來按概率生成隨機數(shù)
例子1
import numpy as np # array([3, 4, 3], dtype=int64) np.random.choice(5, 3, p=[0.1, 0.2, 0.3, 0.1, 0.3])
上述代碼表示分別以p=[0.1, 0.2, 0.3, 0.1, 0.3]的概率從[0,1,2,3,4]這四個數(shù)中選取3個數(shù)
例子2
每天參加體育鍛煉的時間是多少?
A.沒時間鍛煉
B.10-20分鐘
C.20-40分鐘
D.50分鐘以上
假設(shè)有100人填上述選擇題,該題共有4個選項(ABCD),我們?nèi)绾伟锤怕士刂七@100個人選擇A的概率是0.3,B的概率是0.3,C的概率0.3,D的概率是0.1?
import numpy
lists = []
for i in range(1, 101):
r = numpy.random.choice(a=numpy.arange(1,5), p=[0.3, 0.3, 0.3, 0.1])
lists.append(r)
A = 0
B = 0
C = 0
D = 0
'''
數(shù)字1代表A
數(shù)字2代表B
數(shù)字3代表C
數(shù)字4代表D
'''
for i in lists:
if i == 1:
A = A + 1
elif i == 2:
B = B + 1
elif i == 3:
C = C + 1
elif i == 4:
D = D + 1
print("A選項個數(shù):", A)
print("B選項個數(shù):", B)
print("C選項個數(shù):", C)
print("D選項個數(shù):", D)結(jié)果如下所示
A選項個數(shù): 27
B選項個數(shù): 26
C選項個數(shù): 36
D選項個數(shù): 11
到此這篇關(guān)于numpy.random.choice()函數(shù)的文章就介紹到這了,更多相關(guān)numpy.random.choice()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch 實現(xiàn)在一個優(yōu)化器中設(shè)置多個網(wǎng)絡(luò)參數(shù)的例子
今天小編就為大家分享一篇pytorch 實現(xiàn)在一個優(yōu)化器中設(shè)置多個網(wǎng)絡(luò)參數(shù)的例子,具有很好參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python基于ThreadingTCPServer創(chuàng)建多線程代理的方法示例
這篇文章主要介紹了Python基于ThreadingTCPServer創(chuàng)建多線程代理的方法,結(jié)合實例形式分析了Python使用ThreadingTCPServer模塊實現(xiàn)多線程代理功能進行網(wǎng)絡(luò)請求響應(yīng)的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
python調(diào)用dll出現(xiàn)精度問題解決
本文主要介紹了python調(diào)用dll出現(xiàn)精度問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
PyQt 實現(xiàn)使窗口中的元素跟隨窗口大小的變化而變化
今天小編就為大家分享一篇PyQt 實現(xiàn)使窗口中的元素跟隨窗口大小的變化而變化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

