2
假設我想從一個bernoulli分佈列表中抽取一次,例如,概率爲[0.1, 0.2, 0.3]
。我可以用for循環做到這一點,但有一個更好的numpy方式(使用scipy也很好)?numpy一次繪製幾個bernoulli分佈
ps = [0.1, 0.2, 0.3]
[np.random.choice(2, p=[1 - p, p]) for p in ps]
假設我想從一個bernoulli分佈列表中抽取一次,例如,概率爲[0.1, 0.2, 0.3]
。我可以用for循環做到這一點,但有一個更好的numpy方式(使用scipy也很好)?numpy一次繪製幾個bernoulli分佈
ps = [0.1, 0.2, 0.3]
[np.random.choice(2, p=[1 - p, p]) for p in ps]
您可以從二項式中得出n=1
,這相當於伯努利。由於二項式接受一個數組作爲概率參數,你可以使用:
np.random.binomial(1, p=ps)
,如果它的工作給予非常小/大概率的一些元素可以測試並調用該函數幾次。
例如,讓ps = [0.23, 0.48, 0.64, 0.98]
In [90]: np.sum([np.random.binomial(1,p=ps) for i in range(100000)], axis=0)
Out[90]: array([23000, 48115, 64128, 97957])