2017-09-13 10 views
0

私はPythonでnorm.ppf()を使用して正規逆累積分布を計算していますが、Matlabのnorminv()よりはるかに遅いことがわかりました。 Pythonで正規逆累積分布関数を効率的に計算する方法

のMatlabで

for i=1:10000 
    IRI_next=norminv(0.4,0,0.06); 
end 

コスト約0.6秒に対し、Pythonで2秒程度

for i in range(10000): 
    iri_next = norm.ppf(0.4, loc=0, scale=0.06) 

コスト、Pythonで通常の逆累積分布を計算する効率的な方法はありますか?

+0

小さな提案は、私はパイソンがc/C++で行われている基礎エンジンのためにmatlabsの同じ速度に達するとは思わないと思うPythonを使用することです – Andrei

+0

なぜ関数を呼び出す戻り値が常に同じ場合は10000回ですか? –

+0

'ppf'と' norminv'の違い、あるいはPythonループとMatlabループの違いを実際に測定していますか?ループ内で何か他の操作を試してください。チェックするには "no op"(Pythonの 'pass 'など)さえしてください。 –

答えて

2

同じ値を持つ関数に10000回を呼び出すと、あなたに10000回同じ戻り値を与えるという事実を無視して、あなたの最初の引数として配列を渡すと

scipy.stats.norm.ppf(numpy.full(10000, 0.4), loc=0, scale=0.06) 

すべてを一度に10000個の値を取得することができます私のマシンで0.006秒で

+0

この方法は非常に高速です。ありがとう! – GFD

関連する問題