我有一个数组,让我们说一个三维的大小(3,3,3):
M = np.arange(27).reshape((3,3,3))
我想实现的是应用numpy.random.binomial
函数,比如:
X[i,j,k] = (n=M[i,j,k], p=0.5 , size=1)
对于for
循环来说,这应该很容易,但是对于大型数组,这不是最好的主意。你知道吗
一个可能的解决办法是:
def binom(x):
fis = int(np.random.binomial(x,p=0.5,size=1))
return fis
X = np.vectorize(binom)(M)
它工作得很好,但是np.vectorize
基本上是一个伪装得很好的for
等价物,因此对于较大的数组没有太大的改进。
我确信有更便宜更快的解决方案。你知道吗
这似乎是通过将样本数作为多维数组直接传递给
np.binomial()
(至少对于numpy版本1.13.3是这样):相关问题 更多 >
编程相关推荐