如何生成沿每个轴具有不同方差的随机高斯矩阵
How to generate a random gaussian matrix with different variance along each axis
我想生成一个 N×M 的随机高斯矩阵。我希望这个矩阵的方差沿第一个轴较低,而另一个较高。我试过 multivariate_normal 和 cov = [[sigma1, 0], [0, sigma2]]
,但我得到的是 2 个不同的 N 乘 M 矩阵,第一个方差为 sigma1,第二个方差为 sigma2。
首先生成一个方差为 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 的输入是标准开发,而不是方差)。
我想生成一个 N×M 的随机高斯矩阵。我希望这个矩阵的方差沿第一个轴较低,而另一个较高。我试过 multivariate_normal 和 cov = [[sigma1, 0], [0, sigma2]]
,但我得到的是 2 个不同的 N 乘 M 矩阵,第一个方差为 sigma1,第二个方差为 sigma2。
首先生成一个方差为 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 的输入是标准开发,而不是方差)。