生成随机数的归一化矩阵,该行是根据不同的高斯(正态)分布生成的

时间:2019-01-11 12:15:28

标签: python numpy matrix scipy normal-distribution

我正在尝试用python编写一个生成器,该生成器使用高斯(正态)分布生成随机数的N * M矩阵。

给出N和M以及高斯随机场的数量(正态分布)。矩阵中的数字也应介于0和1之间。 例如,从5个不同的高斯分布生成的100 * 80浮点数矩阵介于0和1之间。这些分布的均值和方差可以任意选择。哪个分布生成哪个行以及生成多少行也是任意的。重要的是,一行中的数字是在相同的正态分布中生成的。 (或者说,每一行都是存在于特定的多元高斯分布中的点)

我已经尝试过t。这里我不知道如何通过不同的分布来生成行,0.02太复杂了,难以理解。我一直在寻找很长一段时间,既找不到通过0到1之间的数字进行限制的好方法,也找不到从不同的正态分布生成数字的方法。

1 个答案:

答案 0 :(得分:0)

考虑到您已经拥有sigmamu(指示哪一行将使用哪种发行版):

sigma = np.array((1, 2, 3))
mu = np.array((-1, -2, -3))

只需构建结果分布(3行/不同分布,此处10列):

samples = np.random.standard_normal((3, 10)) * sigma[:, None] + mu[:, None]

请注意,高斯分布是无界的,因此您必须进行裁剪:

samples = np.clip(samples, 0, 1)

当然,根据sigmamu的值,您不会得到值的高斯分布。