numpy.random.choice#
- random.choice(a, size=None, replace=True, p=None)#
從給定的 1 維陣列產生隨機樣本
警告
此函數使用 C-long dtype,在 Windows 上為 32 位元,在 64 位元平台上則為 64 位元(在 32 位元平台上為 32 位元)。自 NumPy 2.0 起,NumPy 的預設整數在 32 位元平台上為 32 位元,在 64 位元平台上為 64 位元。
- 參數:
- a1 維類陣列或整數
如果為 ndarray,則從其元素產生隨機樣本。如果為整數,則產生的隨機樣本如同
np.arange(a)
- size整數或整數元組,選用
輸出形狀。如果給定的形狀為,例如
(m, n, k)
,則會抽取m * n * k
個樣本。預設值為 None,在這種情況下,會傳回單一值。- replace布林值,選用
樣本是否為有放回或無放回。預設值為 True,表示可以多次選取
a
的值。- p1 維類陣列,選用
與 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 維陣列中取樣隨機列無法使用此函數,但可以使用
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')