我正在尝试生成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/