2017-02-06 111 views
4

我想在python中實現高斯混合模型的期望最大化算法。numpy:通過廣播擺脫for循環

我有以下行來計算高斯概率p我的數據X給出的平均和協方差高斯分佈的西格瑪

for i in range(len(X[0])): 
    p[i] = scipy.stats.multivariate_normal.pdf(X[:,i],mu,sigma) 

我想知道我以某種方式可以擺脫for循環得到像

p[:] = scipy.stats.multivariate_normal.pdf(X[:,:]??) 

我在廣播方面做過一些研究,並且正在考慮使用numpy.einsum函數,但無法弄清楚它在這種情況下的工作方式。

+0

爲你所做的發佈解決方案的工作? – Divakar

+0

是的,它做到了!非常感謝 – marilou

回答

0

平展,使用pdf電話,重塑背部 -

from scipy import stats 

out = stats.multivariate_normal.pdf(X.ravel(),mu,sigma).reshape(-1,len(X[0])).T