生成具有正态分布噪声和平均函数的数据

时间:2016-09-16 19:09:46

标签: python numpy scipy normal-distribution

我创建了一个numpy数组,其中n值为0到2pi。现在,我想生成偏离正常分布的sin(x)的n个测试数据点。

所以我想我需要做这样的事情:t = sin(x) + noise。噪音必须是这样的:noise = np.random.randn(mean, std)

但是,当我的意思是罪(x)(而不是常数)时,我不知道如何计算噪音。

2 个答案:

答案 0 :(得分:2)

numpy.random.randn的论据不是均值和标准差。为此,您需要numpy.random.normal。它的签名是

normal(loc=0.0, scale=1.0, size=None)

要为sin函数添加噪音,只需在normal()的调用中使用均值0即可。均值对应于loc参数(即“位置”),默认值为0.因此,假设x类似np.linspace(0, 2*np.pi, n),则可以执行此操作:

t = np.sin(x) + np.random.normal(scale=std, size=n)

可以使用numpy.random.randn,但你需要按std进行缩放,因为randn会返回标准正态分布中的样本,均值为0标准偏差1.要使用randn,您可以写:

t = np.sin(x) + std * np.random.randn(n)

答案 1 :(得分:2)

如果将噪声添加到y坐标,则某些测试数据点的值可能超出正弦函数的正常范围,即不是-1到1,而是来自 - (1 +噪音)到+(1 +噪音)。我建议将噪音添加到x坐标:

t = np.sin(x + np.random.uniform(-noise, noise, x.shape))

其中noise必须是您问题的合适值。