我有一个计算概率的函数,如下所示:
def multinormpdf(x, mu, var): # calculate probability of multi Gaussian distribution
k = len(x)
det = np.linalg.det(var)
inv = np.linalg.inv(var)
denominator = math.sqrt(((2*math.pi)**k)*det)
numerator = np.dot((x - mean).transpose(), inv)
numerator = np.dot(numerator, (x - mean))
numerator = math.exp(-0.5 * numerator)
return numerator/denominator
我有均值向量,协方差矩阵和2D numpy数组来测试
^{pr2}$我要计算每个值的概率,所以我使用了这个代码
for i in arr:
print(multinormpdf(i, mu, var)) # I already know mean_vector and variance_matrix
但是太慢了。。。在
有没有更快的方法来计算概率? 或者,有没有什么方法可以像“批处理”一样,一次计算测试arr的概率?在
您可以轻松地将函数矢量化:
由于
^{pr2}$fast_multinormpdf
比未定位的函数快1000倍:你可以试试麻木。只需用
@numba.vectorize
装饰函数。在如果您的
multinormpdf
不包含任何不受支持的函数,则可以加速它。请看这里:https://numba.pydata.org/numba-doc/dev/reference/numpysupported.html此外,您可以像这样使用实验特性
^{pr2}$target='parallel'
。在相关问题 更多 >
编程相关推荐