1

vec と呼ばれる [5,125000000] numpy 配列に積み上げられた 5 つの大きな標準正規分布ベクトル (len = 125,000,000) があります。私は次のことを行います:

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 をダウンロードした場合、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])
4

0 に答える 0