我想生成N×M随机高斯矩阵。我希望这个矩阵的方差沿着第一轴是低的,而对于另一个是高的。我尝试过使用multivariate_normal和cov = [[sigma1, 0], [0, sigma2]]
,但我得到的是2个不同的N乘M矩阵,第一个是方差sigma1,第二个是方差sigma2。
答案 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的输入是标准开发,而不是方差)。