从随机矩阵生成样本
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]])
假设我们有一个大小为 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]])