假设我们有一个大小为n * m的随机矩阵A.每个元素A_ij是伯努利分布的成功概率。
我想使用以下规则从A中绘制样本z:
z_ij从伯努利(A_ij)抽签
是否有任何numpy功能支持这个?
编辑:
等操作arr = numpy.random.random([10, 5])
f = lambda x: numpy.random.binomial(1, x)
sp = map(f, arr)
效率低下。有没有更快的方法?
答案 0 :(得分:3)
您可以直接将数组作为二项分布的参数之一,例如:
import numpy as np
arr = np.random.random([10, 5])
sp = np.random.binomial(1, arr)
sp
给出
array([[0, 0, 0, 0, 0], [1, 0, 0, 1, 1], [1, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [0, 1, 0, 1, 0], [0, 1, 1, 0, 0], [0, 0, 0, 1, 1], [0, 1, 0, 0, 0], [1, 0, 0, 1, 0]])