python - 计算多个数据点的多元正态密度

标签 python numpy scipy

如果我有 N 个数据点,每个数据点都有 D 维,有没有办法在不使用 for 循环的情况下快速计算每个数据点的多元高斯 pdf 值?对于一个具有 D 维度的数据点 x,我可以按如下方式计算 pdf 的值(scipy):

multivariate_normal.pdf(x, mean, cov)

其中 x 为 1xD,平均值为 1xD,cov 为 DxD。我想计算这个,以便通过执行以下操作获得一个长度为 N 的 pdf 数组:

multivariate_normal.pdf(X, mean, cov)

其中 X 是 NxD。每个数据点具有相同的均值和协方差。做到这一点最有效的方法是什么?

最佳答案

只要传递一个合适的数组x,就没有问题。这里 pdf 是在二维空间的 5 个随机点处评估的。

mean = np.array([3, 2])
cov = np.array([[4, 1], [1, 5]])
x = np.random.uniform(size=(5, 2))

multivariate_normal.pdf(x, mean, cov)

返回

array([ 0.01424279,  0.01537563,  0.01758953,  0.01994425,  0.01584357])

关于python - 计算多个数据点的多元正态密度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47361838/

相关文章:

python - 在 python 中访问第 n 个维度

python - 使用顺序求解器时,如何在 Python Gekko 中定义 Intermediate 的最大值和另一个值?

python - 将乘法结果保存到现有数组

python - Python中隐式曲线的高阶局部插值

python - Python中使用fft2的"valid"和"full"卷积

python - 如何确定 N 个 bool Pandas 列的逻辑真值?

python - 无法使用 Django 在 GCM 中发送 POST 请求

python - 如何选择带有边界框的 numpy 二维数组中唯一元素的所有位置?

python - 在 numpy 中用一个数组索引另一个数组

python - 根据峰间距离过滤掉波谷