给定均值和标准差,生成二维正态分布

4
我正在寻找二维空间中与numpy.random.normal相对应的函数,即numpy.random.normal使用均值、标准差和样本数作为输入生成一个一维数组,我需要的是使用相同的输入参数在二维空间中生成点的方法。
看起来numpy.random.multivariate_normal可以做到这一点,但我不太明白cov参数应该是什么。以下摘自scipy文档的描述更详细地说明了此参数:
分布的协方差矩阵。必须对称且半正定以获得“物理意义”的结果。
在页面的后面例子部分中,给出了一个示例cov值。
cov = [[1,0],[0,100]] # diagonal covariance, points lie on x or y-axis

然而,这个概念对我来说还是相当模糊的。

如果有人能够澄清应该是什么样的cov,或者建议使用Python生成二维空间中给定平均值和标准差的点的另一种方法,我将不胜感激。

3个回答

6
如果您将size=[1, 2]传递给normal()函数,您将得到一个二维数组,这正是您要找的内容:
>>> numpy.random.normal(size=[1, 2])
array([[-1.4734477 , -1.50257962]])

谢谢您的回答。我该如何使用它生成一个包含500个点的分布呢?看起来这只给了我一个x,y对。 - Ryan
1
你可以将大小调整为 [500, 2]。但是,这取决于你的数据集...也许最好使用 [1, 1000] 或者循环遍历并单独生成每个大小,或者其他任何方法 ;) - tamasgal

2
正常生成的随机点。
np.random.normal(10, 5, size=[100, 2])

10是平均值,5是标准差。

-3

N(mu, sigma^2) 的随机样本,请使用:

sigma * np.random.randn(...) + mu

例子:

np.random.randn()
2.1923875335537315 # 随机数

从 N(3, 6.25) 中获得的 2x4 数组样本:

2.5 * np.random.randn(2, 4) + 3

array( [[-4.49401501, 4.00950034, -1.81814867, 7.29718677],
[ 0.39924804, 4.68456316, 4.99394529, 4.84057254]])

https://numpy.org/doc/1.15/reference/generated/numpy.random.randn.html

2
回答目前的表述不清楚。请编辑以添加更多细节,帮助他人理解如何解决所提出的问题。您可以在帮助中心找到有关撰写良好答案的更多信息。 - moken
虽然此链接可能回答了问题,但最好在此处包含回答的关键部分,并提供链接作为参考。只有链接的回答如果链接页面更改,就可能变得无效。- 来自审查 - iantonuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接