numpy.random.RandomState.choice#
方法
- random.RandomState.choice(a, size=None, replace=True, p=None)#
從給定的 1-D 陣列產生隨機樣本
警告
此函數使用 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.choice 的
axis
關鍵字達成。範例
從大小為 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')