我正在尝试生成3D分布,其中x, y代表表面平面,z是某个值的大小,分布在一定范围内。

我正在查看numpy's multivariate_normal,但是它只允许我获取一些样本。我希望能够指定一些x, y坐标,并获取z值应该是什么;这样我就可以查询gp(x, y)并获取遵循一定均值和协方差的z值。

也许是一个更具说明性的(玩具)示例:假设我有一些温度分布,可以将其建模为高斯过程。因此,我的平均温度为(0, 0)时可能为20,协方差为[[1, 0], [0, 1]]。我希望能够创建一个模型,然后可以在不同的x, y位置进行查询,以获取该位置的温度(因此,在(5, 5)处,我可能会返回7度左右的温度)。

如何最好地做到这一点?

最佳答案

您可以使用scipy.stats.multivariate_normal创建多元法线。

>>> import scipy.stats
>>> dist = scipy.stats.multivariate_normal(mean=[2,3], cov=[[1,0],
                                                            [0,1]])


然后找到p(x,y),您可以使用pdf

>>> dist.pdf([2,3])
0.15915494309189535
>>> dist.pdf([1,1])
0.013064233284684921


表示给定任何z的概率(您称为[x,y]

关于python - 生成3D高斯数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41856078/

10-12 21:53