在Numpy / Scipy中使用元素方式sigma进行高斯分布

时间:2016-12-12 12:55:15

标签: python numpy scipy statistics

要为我的拟合算法生成测试数据,我需要创建一个高斯噪声数组,其sigma按元素指定。 pure-python实现如下:

from numpy.random import normal
for i in range(100):
    for j in range(100):
        for k in range(100):
            image[i, j, k] += normal(0, sigmas[i, j, k])

这是为了模拟噪声图像,其中每个像素都是一个测量值 值,指定方差;为了进行合理的测试,我需要生成与方差相关的噪声(我已经给出了)。

这个实现太慢了(我正在使用大型3d数组)所以我正在寻找的是一种加速它的方法(很可能是使用矢量化的lib方法)。

1 个答案:

答案 0 :(得分:3)

numpy.random.normal的参数可以是数组。 将数组sigmas作为第二个参数传递,例如

noise = normal(0, sigmas)
image += noise