FiR*_*iTi 2 python numpy numpy-random
我有一个表示图像的numpy.ndarray,我想给它添加随机噪声。我已经进行了一些测试,到目前为止,我要做的最快的解决方案是:
def RandomNoise(x):
x += np.random.random(x.shape)
Run Code Online (Sandbox Code Playgroud)
但是,当我有大图像/阵列时,此解决方案仍然太慢。最快的方法是什么?
使此速度更快的最简单方法是避免分配您实际上不需要的随机数组。为避免这种情况,请使用Numba:
import numba
import random
@numba.njit
def RandomNoise2(x):
x = x.reshape(-1) # flat view
for ii in range(len(x)):
x[ii] += random.random()
Run Code Online (Sandbox Code Playgroud)
对于中等大小的数组(例如400万个元素),它在JIT编译代码时第一次运行后会稍快一些。对于2千万个值的大型数组,速度是它的两倍甚至更多。如果您的内存不足,它将大大提高速度,因为它将避免交换。