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

时间:2017-11-18 02:22:01

标签: python numpy scipy

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

multivariate_normal.pdf(x, mean, cov)

其中x是1xD,平均值是1xD,cov是DxD。我想计算这个,这样我得到一个pdf数组,长度为N,做类似的事情:

multivariate_normal.pdf(X, mean, cov)

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

1 个答案:

答案 0 :(得分:3)

只需传递合适的数组x,没有问题。这里pdf在2维空间的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])