如何查看numpy.random.exponential的源代码?

时间:2016-10-07 05:28:29

标签: python numpy random

我想看看numpy.random.exponential是否使用F ^ { - 1}(U)方法实现,其中F是指数分布的c.d.f而U是均匀分布。

我尝试了numpy.source(random.exponential),但又返回' 此对象无法使用。。这是不是意味着这个函数不是用Python编写的?

我也试过了inspect.getsource(random.exponential),但又回复了一条错误,说它不是模块,功能等。

2 个答案:

答案 0 :(得分:6)

numpy的来源是at github所以你可以使用github的source-search

通常,库的这些部分不是用纯python实现的。

python-parts(关于你的问题)是here

更相关的代码部分来自distributions.c

double rk_standard_exponential(rk_state *state)
{
    /* We use -log(1-U) since U is [0, 1) */
    return -log(1.0 - rk_double(state));
}

double rk_exponential(rk_state *state, double scale)
{
    return scale * rk_standard_exponential(state);
}

答案 1 :(得分:1)

许多numpy函数都是用C / C ++和Fortran编写的。 numpy.source()仅返回用Python编写的对象的源代码。它写在NumPy website上。

您可以在GitHub页面上找到所有NumPy功能。您需要的是用C语言编写的。以下是file的链接。