2017-09-13 169 views
0

我在Python中使用norm.ppf()來計算正態逆累積分佈,但是我發現它比Matlab中的norminv()慢得多。如何在Python中高效計算正態逆累積分佈函數

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

成本大約在Python 2秒,而在Matlab

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

成本約0.6第二個是有以計算在Python正常逆累積分佈的有效方法?

+0

一個小建議是使用python來調用ac函數我不相信python會達到相同的matlabs速度,因爲底層引擎在c/C++中完成 – Andrei

+0

爲什麼調用函數如果返回的值總是相同的10000次? –

+0

你真的在測量'ppf'和'norminv'中的差異,還是僅僅是Python循環和Matlab循環之間的區別?在循環中嘗試一些其他操作,甚至可能是「無操作」(即Python中的「pass」)來檢查。 –

回答

2

忽視的事實是擁有相同的值調用該函數10000次會給你10000次同樣的返回值,可以傳遞一個數組作爲第一個參數,並獲得10000個值一下子

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

在我的機器上0.006秒

+0

這種方式非常快。謝謝! – GFD