我知道我們可以使用以下代碼行創建布林值的 NumPy 陣列:
np.random.choice(a=[False, True], size=(N,))
但是,如果我想指定我希望這個隨機陣列具有大約 60%(或更普遍的 k%)真值怎么辦?
uj5u.com熱心網友回復:
np.random.choice對于大型陣列,使用可能會很慢。我建議做
import numpy as np
N = 100_000
booleans = np.random.rand(N) < 0.6
np.random.rand將在0.0和之間產生統一的亂數1.0,并且比較會將所有數字設定0.6為True,從而為您提供一個包含大約 60%True值的陣列。
如果你需要的比例正是你所要求的,你可以這樣做
k = 60 # 60%
booleans = np.zeros(shape=(N,), dtype=bool) # Array with N False
booleans[:int(k / 100 * N)] = True # Set the first k% of the elements to True
np.random.shuffle(booleans) # Shuffle the array
np.count_nonzero(booleans) # Exactly 60 000 True elements
uj5u.com熱心網友回復:
使用概率陣列引數 np.choice
import numpy as np
N = 100
res = np.random.choice(a=[False, True], size=(N,), p=[0.4, 0.6])
print(np.count_nonzero(res))
輸出(單次運行)
62
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/339474.html
