numpy.random.RandomState.choice#

方法

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

從給定的 1-D 陣列產生隨機樣本

注意

新程式碼應使用 choice 方法,此方法屬於 Generator 實例;請參閱快速入門

警告

此函數使用 C-long dtype,在 Windows 上為 32 位元,在 64 位元平台上則為 64 位元(在 32 位元平台上為 32 位元)。自 NumPy 2.0 起,NumPy 的預設整數在 32 位元平台上為 32 位元,在 64 位元平台上為 64 位元。

參數:
a1-D 類陣列或整數

若為 ndarray,則從其元素產生隨機樣本。若為整數,則隨機樣本的產生方式如同它是 np.arange(a)

size整數或整數元組,選用

輸出形狀。若給定的形狀為,例如 (m, n, k),則會抽出 m * n * k 個樣本。預設值為 None,在此情況下會傳回單一值。

replace布林值,選用

樣本是否為可放回或不可放回。預設值為 True,表示可以多次選取 a 的值。

p1-D 類陣列,選用

與 a 中每個條目相關聯的機率。若未給定,則樣本會假設所有條目在 a 中呈均勻分佈。

傳回:
samples單一項目或 ndarray

產生的隨機樣本

引發:
ValueError

若 a 為小於零的整數,若 a 或 p 不是 1 維,若 a 是大小為 0 的類陣列,若 p 不是機率向量,若 a 和 p 的長度不同,或若 replace=False 且樣本大小大於母體大小

另請參閱

randint, shuffle, permutation
random.Generator.choice

新程式碼應使用此方法

註解

透過 p 設定使用者指定的機率會使用比預設值更通用但效率較低的取樣器。即使 p 的每個元素都是 1 / len(a),通用取樣器產生的樣本也與最佳化取樣器不同。

從 2-D 陣列取樣隨機列無法使用此函數,但可透過 Generator.choiceaxis 關鍵字達成。

範例

從大小為 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')