从随机矩阵生成样本

时间:2016-03-16 11:43:04

标签: python numpy random-sample

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

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

1 个答案:

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