2017-02-06 10 views
4

私はPythonでGaussian Mixture ModelのExpectation Maximization Algorithmを実装しようとしています。numpy:ブロードキャストでforループを取り除く

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

私があれば知りたいと思った:

私はガウス分布のムーと共分散シグマ平均与えられた自分のデータXのガウス確率Pを計算するために以下の行を持っています私は何とか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 
関連する問題