如何生成沿每个轴具有不同方差的随机高斯矩阵

时间:2015-10-13 12:36:11

标签: python numpy statistics

我想生成N×M随机高斯矩阵。我希望这个矩阵的方差沿着第一轴是低的,而对于另一个是高的。我尝试过使用multivariate_normal和cov = [[sigma1, 0], [0, sigma2]],但我得到的是2个不同的N乘M矩阵,第一个是方差sigma1,第二个是方差sigma2。

1 个答案:

答案 0 :(得分:3)

首先生成一个方差数组1,然后逐行添加从具有更高方差的分布中采样的数字。

M = 20
N = 20

a = np.random.normal(0, 1, (N, M))
b = np.random.normal(0, 3, N)[:, None]

print np.var(a + b, axis=0)
print np.var(a + b, axis=1)

在行中添加相同的数字不会改变其方差:var(X + k)= var(X),因此行的方差不变。 但考虑到一个专栏,由于独立高斯之和的方差是它们方差的总和,所以你增加了方差。

这里第一个方差是1(未改变),第二个方差是(大约)1 ^ 2 + 3 ^ 2(a和b的输入是标准开发,而不是方差)。