从随机矩阵生成样本

Generate samples from a random matrix

假设我们有一个大小为 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)

效率低下。有没有更快的方法?

您可以直接给出一个数组作为二项分布的参数之一,例如:

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