2017-11-18 181 views
0

如果我有N個數據點,每個數據點都有D維,有沒有辦法在不使用for循環的情況下爲每個數據點快速計算多元高斯pdf值?對於一個數據點x,其中d的尺寸,如下(SciPy的)我可以計算pdf的值:計算多元數據點的多元正態密度

multivariate_normal.pdf(x, mean, cov) 

其中x是1XD,意思是1XD,COV是DXD。我要計算這個讓我得到的PDF文件,長度爲N的數組,做類似:

multivariate_normal.pdf(X, mean, cov) 

其中X是NXD。每個數據點具有相同的均值和協方差。做這件事最有效的方法是什麼?

回答

0

只要通過一個合適的數組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]) 
+0

哇,我覺得很無聊。它不適合我,因爲數據數組是這樣的轉置,所以我認爲這是不可能的。我正在慢慢意識到numpy廣播的力量!謝謝。 – ru111