在 numpy 二项式函数上设置输出矩阵

Noa*_*tar 7 python random performance multithreading numpy

我想在我的项目中使用以下示例,该示例使用多个线程使用随机值填充数组。 https://numpy.org/doc/1.18/reference/random/multithreading.html

但是,我想使用二项式分布而不是标准正态分布。我的问题是方法numpy.random.Generator.binomial没有放置结果的“out”参数(如standard_normal方法)。这意味着我必须将提供给我的输出矩阵复制到我的矩阵中,从而严重降低性能。

有没有替代方法可以解决这个问题?

如果这有帮助,我实际上需要伯努利分布,即二项式分布中的 n=1(但任意 p)。

小智 0

out如果你想在 中绘制统一的浮点数,numpy.random.Generator.random有一个参数[0.0,1.0)

然后你就可以使用:

def bernoulli(shape, p):
    U = uniform(shape) # can use multithreading
    return U < p       # should be fast enough
Run Code Online (Sandbox Code Playgroud)