我有五个大型标准正态分布向量(len = 125,000,000)堆积在一个名为 vec 的 [5,125000000] numpy 数组中。我继续做:
chisqr = sum(multiply(vec,vec)/var_vec,0)
然后使用 scipy 获取 CDF 并执行以下操作:
one_minus_cdf = 1-stats.chi2.cdf(chisqr,[5])
除了最后一行需要大量时间来完成之外,它工作正常。任何人都可以帮我设计一种方法来加快速度吗?先感谢您。
我对python不是很有经验,所以请耐心等待。我使用非官方的 Windows 二进制文件安装了 numpy 和 scipy(是的,对不起;我在 Windows 上)。我认为默认情况下 numpy 是针对 ATLAS 编译的?如果我下载了它,我不知道如何使用 MKL。我知道我可以获得 30 天的试用期。我只是想知道在开始使用 MKL 之类的东西之前是否可以使用其他一些建议或技巧(顺便说一句,从这个开始最柔和的方法是什么?)。
这是一个可重现的示例:
import numpy as np
from scipy import stats
vec = np.random.rand(5,12500000)
var_mad = np.tile(np.mat(1).T,(1,12500000))
chisqr = sum(np.multiply(vec,vec)/var_mad,0)
one_minus_cdf = 1-stats.chi2.cdf(chisqr,[5])