numpy:通过广播摆脱 for 循环
numpy: get rid of for loop by broadcasting
我正在尝试在 python 中实现高斯混合模型的期望最大化算法。
我有以下行来计算我的数据 X 的高斯概率 p 给定均值 mu和高斯分布的协方差sigma:
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
函数,但无法弄清楚在这种情况下它会如何工作。
展平,使用 pdf
调用并重新整形 -
from scipy import stats
out = stats.multivariate_normal.pdf(X.ravel(),mu,sigma).reshape(-1,len(X[0])).T
我正在尝试在 python 中实现高斯混合模型的期望最大化算法。
我有以下行来计算我的数据 X 的高斯概率 p 给定均值 mu和高斯分布的协方差sigma:
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
函数,但无法弄清楚在这种情况下它会如何工作。
展平,使用 pdf
调用并重新整形 -
from scipy import stats
out = stats.multivariate_normal.pdf(X.ravel(),mu,sigma).reshape(-1,len(X[0])).T