如何在噪声中添加非零元素?

时间:2019-07-16 02:15:58

标签: python numpy

我有一个numpy数组和一个噪声函数。

def gaussian_noise(X,sigma=0.1):
    noise = np.random.normal(0, sigma, X.shape)
    return X + noise

如何向非零元素添加一些噪声? 例如:

# input an array
a = array([[1, 0, 3],
           [2, 5, 0],
           [0, 0, 7]])
b = gaussian_noise(a)

输出:

b = array([[ 0.83781175, 0.,  2.99969046],
           [ 1.92693919,  4.85350012,  0.],
           [0.,  0.,  7.04896986]])

如何修改我的功能?

1 个答案:

答案 0 :(得分:0)

简单选择问题

def gaussian_noise(X,sigma=0.1):
    X = np.array(X, dtype=np.float)
    M = X!=0
    noise = np.random.normal(0, sigma, X.shape)
    X[M] += noise[M]
    return X

会做