2016-01-23 296 views
1

有没有什么方法可以在单行中执行以下操作? 假设我有概率的阵列,Python numpy根据概率生成随机二进制值数组

p=np.array([0.75, 0.63, 0.33, 0.25, 0.47]) 

,其中每个值对应于选择1和(1-P)的概率对应于选择0,即概率,0.75是选择1的可能性, 1-0.75是选择0的概率,选择1的概率是0.63,选择0的概率是1-0.63等等。有没有更简单的方法可以让我做到以下几点,希望没有循环?

values = np.empty(p.shape) 
for i, prob in enumerate(p): 
    values[i] = np.random.binomial(1, prob) 

我知道它可以使用地图完成,但有没有办法直接在numpy中做到这一点?

回答

2
values = np.random.binomial(1, p) 
+0

我从来不知道它可以与一系列概率一起使用。我应该更好地阅读文档。对不起。非常感谢。 – Aditya369

+0

不用担心。不是你的错 - ipython中的文档指定它应该是一个浮点数,但numpy中的大多数操作都被设计为可以广播的,所以即使文档说别的东西也值得尝试。 – vahndi