如果我有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。每个数据点具有相同的均值和协方差。这样做最有效的方法是什么?
答案 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])