我有一个概率数组,我想使用这些概率生成一个选取值数组,每个值都以相应的概率选取。
例:
in: [ 0.5, 0.5, 0.5, 0.5, 0.01, 0.01, 0.99, 0.99]
out: [ 0, 1, 1, 0, 0, 0, 1, 1]
我想为此使用numpy
本机函数,而不是以下循环:
array_of_probs = [0.5, 0.5, 0.5, 0.5, 0.01, 0.01, 0.99, 0.99]
results = np.zeros(len(array_of_probs))
for i, probs in enumerate(array_of_probs):
results[i] = np.random.choice([1, 0], 1, p=[probs, 1-probs])
您可以通过将数组与随机生成的数组进行比较来轻松计算此值,因为 0 到 1 之间的随机数小于 0.3 的概率为 0.3。
例如
np.random.rand(len(odds)) < odds