numpy нарисовать несколько распределений bernoulli сразу

Скажем, я хочу извлечь из списка распределений бернулли сразу, например, с вероятностями [0.1, 0.2, 0.3] . Я мог бы сделать это с помощью цикла for, но есть ли лучший способ numpy (использование scipy тоже прекрасно)?

 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])