要为我的拟合算法生成测试数据,我需要创建一个高斯噪声数组,其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方法)。
答案 0 :(得分:3)
numpy.random.normal
的参数可以是数组。
将数组sigmas
作为第二个参数传递,例如
noise = normal(0, sigmas)
image += noise