首页 > 解决方案 > 如何在噪声中添加非零元素?

问题描述

我有一个 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]])

如何修改我的功能?

标签: pythonnumpy

解决方案


简单的选择问题

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

会做


推荐阅读