我有一個asize的陣列n*2,我想a[i,j]用陣列mean= a[i,j]中standard deviation = 0.2* a[i,j]的每個數字向每個值添加一個高斯噪聲。你能幫我解決這個問題嗎?
這是一個陣列示例:
import numpy as np
a = np.random.rand(10,2)
uj5u.com熱心網友回復:
如果您查看檔案,該np.random.normal函式對 mean 和 stdev 引數都采用類似陣列的方式,所以
x = np.random.rand(10, 2)
noise = np.random.normal(x, 0.2*x)
x noise
但是,我并不完全遵循您使用陣列中的每個值作為平均值的推理......如果您想為資料添加噪聲,為什么不使用loc=0?然后,這將為每個值添加 /- 一點點高斯分布噪聲,而不會嚴重扭曲每個值。
例如,如果x[i,j] == 6, 并且您添加了以 為中心的噪聲~G(6, 1.2),那么平均x[i, j]12 會大到 12 ,這與其說是添加噪聲,不如說是從根本上改變了資料。
在這里,取6某個給定坐標的值x[i, j],
In [12]: 6 np.random.normal(6, 0.2*6)
Out[12]: 13.812965429428406
你6變成了13.81——這是你的意圖嗎?
根據每個分布,您可能會不斷地將所有資料向正方向移動,這幾乎肯定不是您想要的。如果你只是想給你的資料添加抖動,你應該使用loc=0.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/441542.html
上一篇:在3Dnumpy陣列中填充對角線
