我正在尝试在python中实现高斯混合模型的期望最大化算法。
我有以下行来计算我的数据 X 的高斯概率 p 给定平均 mu 和协方差 sigma 高斯分布的em>:
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 :(得分:0)
展平,使用pdf
调用并重新整形 -
from scipy import stats
out = stats.multivariate_normal.pdf(X.ravel(),mu,sigma).reshape(-1,len(X[0])).T