如何在Python中有效地计算正态逆累积分布函数

时间:2017-09-13 13:41:58

标签: python numpy scipy

我在Python中使用norminv()来计算正常的逆累积分布,但我发现它比Matlab中的for i in range(10000): iri_next = norm.ppf(0.4, loc=0, scale=0.06) 慢得多。

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

在Python中花费大约2秒,而

$.ajax({
    url: "/family?idperson=1234",
    dataType: 'json',
    success: function(res) {
        console.log(JSON.stringify(res, null, 4));
    },
    error: function(err) {                
    }
});

在Matlab中花费大约0.6秒

有没有一种有效的方法来计算Python中的正常逆累积分布?

1 个答案:

答案 0 :(得分:2)

忽略使用相同的值调用函数10000次将为您提供相同返回值的10000倍的事实,您可以将数组作为第一个参数传递并一次获得10000个值

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

在我的机器上0.006秒