當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy random.choice用法及代碼示例


本文簡要介紹 python 語言中 numpy.random.choice 的用法。

用法:

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

從給定的一維數組生成隨機樣本

注意

新代碼應改為使用default_rng() 實例的choice 方法;請參閱快速入門。

參數

a 一維數組或int

如果是 ndarray,則從其元素生成隨機樣本。如果是 int,則生成隨機樣本,就好像它是 np.arange(a)

size int 或整數元組,可選

輸出形狀。例如,如果給定的形狀是 (m, n, k) ,則繪製 m * n * k 樣本。默認為無,在這種情況下返回單個值。

replace 布爾值,可選

樣品是否有更換。默認值為 True,這意味著可以多次選擇 a 的值。

p 一維數組,可選

與 a 中的每個條目相關聯的概率。如果未給出,則示例假定 a 中所有條目的均勻分布。

返回

samples 單項或 ndarray

生成的隨機樣本

拋出

ValueError

如果 a 是 int 並且小於零,如果 a 或 p 不是一維,如果 a 是大小為 0 的類似數組,如果 p 不是概率向量,如果 a 和 p 具有不同的長度,或者如果replace=False並且樣本大小大於總體大小

注意

通過p 設置用戶指定的概率使用比默認設置更通用但效率更低的采樣器。即使 p 的每個元素都是 1 /len(a),通用采樣器也會產生與優化采樣器不同的樣本。

使用此函數無法從二維數組中采樣隨機行,但可以通過 axis 關鍵字使用 Generator.choice

例子

從大小為 3 的 np.arange(5) 生成均勻隨機樣本:

>>> np.random.choice(5, 3)
array([0, 3, 4]) # random
>>> #This is equivalent to np.random.randint(0,5,3)

從大小為 3 的 np.arange(5) 生成非均勻隨機樣本:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0]) # random

從大小為 3 的 np.arange(5) 生成均勻隨機樣本,無需替換:

>>> np.random.choice(5, 3, replace=False)
array([3,1,0]) # random
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]

從大小為 3 的 np.arange(5) 生成非均勻隨機樣本,無需替換:

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0]) # random

上麵的任何一個都可以用任意類似數組的方式重複,而不僅僅是整數。例如:

>>> aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
>>> np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
array(['pooh', 'pooh', 'pooh', 'Christopher', 'piglet'], # random
      dtype='<U11')

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.random.choice。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。