【问题标题】:Generate two-dimensional normal distribution given a mean and standard deviation在给定均值和标准差的情况下生成二维正态分布
【发布时间】:2014-11-17 08:55:31
【问题描述】:

我正在寻找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 在二维空间中生成点,我将不胜感激。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    如果你将size=[1, 2] 传递给normal() 函数,你会得到一个二维数组,这正是你要找的:

    >>> numpy.random.normal(size=[1, 2])
    array([[-1.4734477 , -1.50257962]])
    

    【讨论】:

    • 感谢您的回答。我将如何使用它来生成具有 500 个点的分布?看起来这只给了我一对 x,y 对
    • 您将大小调整为[500, 2]。但是,这取决于您的数据集……也许最好使用[1, 1000],甚至循环并单独生成每个数据集,或者其他什么; )