gpt4 book ai didi

python - 在 Python 中生成 3D 高斯分布

转载 作者:太空狗 更新时间:2023-10-30 01:14:59 48 4
gpt4 key购买 nike

我想在 Python 中生成一个高斯分布,其中 x 和 y 维度表示位置,z 维度表示某个量的大小。

分布的最大值为 2e6,标准差 sigma=0.025。

在 MATLAB 中,我可以使用:

x1 = linspace(-1,1,30);
x2 = linspace(-1,1,30);

mu = [0,0];
Sigma = [.025,.025];

[X1,X2] = meshgrid(x1,x2);
F = mvnpdf([X1(:) X2(:)],mu,Sigma);
F = 314159.153*reshape(F,length(x2),length(x1));
surf(x1,x2,F);

在 Python 中,我目前拥有的是:

x = np.linspace(-1,1,30)
y = np.linspace(-1,1,30)

mu = (np.median(x),np.median(y))

sigma = (.025,.025)

有一个 Numpy 函数 numpy.random.multivariate_normal 据说可以做与 MATLAB 的 mvnpdf 相同的事情,但我正在努力理解 documentation .特别是在获取 numpy.random.multivariate_normal 所需的协方差矩阵时。

最佳答案

从 scipy 0.14 开始,您可以使用 scipy.stats.multivariate_normal.pdf()

import numpy as np
from scipy.stats import multivariate_normal

x, y = np.mgrid[-1.0:1.0:30j, -1.0:1.0:30j]
# Need an (N, 2) array of (x, y) pairs.
xy = np.column_stack([x.flat, y.flat])

mu = np.array([0.0, 0.0])

sigma = np.array([.025, .025])
covariance = np.diag(sigma**2)

z = multivariate_normal.pdf(xy, mean=mu, cov=covariance)

# Reshape back to a (30, 30) grid.
z = z.reshape(x.shape)

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

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com