我想看看numpy.random.exponential
是否使用F ^ { - 1}(U)方法实现,其中F是指数分布的c.d.f而U是均匀分布。
我尝试了numpy.source(random.exponential)
,但又返回' 此对象无法使用。。这是不是意味着这个函数不是用Python编写的?
我也试过了inspect.getsource(random.exponential)
,但又回复了一条错误,说它不是模块,功能等。
答案 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的链接。