【发布时间】:2015-12-08 14:25:07
【问题描述】:
我在 python 中有以下函数,我无法弄清楚如何以矢量化形式表达。 对我来说,cov 是一个形状为 (2,2) 的 numpy 数组,mu 是形状为 (2,) 的平均向量,xtp 是形状 (~50000,2)。 我知道 scipy 提供 scipy.stats.multivariate_normal.pdf 但我正在尝试学习如何编写高效的矢量化代码。请
def mvnpdf(xtp, mu, cov):
temp = np.zeros(xtp.shape[0])
i = 0
length = xtp.shape[0]
const = 1 / ( ((2* np.pi)**(len(mu)/2)) * (np.linalg.det(cov)**(1/2)) )
inv = np.linalg.inv(cov)
while i < length:
x = xtp[i]-mu
exponent = (-1/2) * (x.dot(inv).dot(x))
temp[i] = (const * np.exp(exponent))
i+=1
return temp
【问题讨论】:
标签: python numpy scipy vectorization