【问题标题】:How to view the source code of numpy.random.exponential?如何查看numpy.random.exponential的源码?
【发布时间】:2017-02-16 00:41:03
【问题描述】:

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

我尝试了numpy.source(random.exponential),但返回“此对象不可用”。这是否意味着这个函数不是用 Python 编写的?

我也试过inspect.getsource(random.exponential),但返回一个错误,说它不是模块、函数等。

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

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

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

    python 部分(关于您的问题)是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);
    }
    

    【讨论】:

      【解决方案2】:

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

      您可以在他们的 GitHub 页面上找到所有 NumPy 函数。您需要的一个是用 C 语言编写的。这是file 的链接。

      【讨论】:

        猜你喜欢
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 2017-04-12
        • 2012-06-13
        • 2011-03-01
        相关资源
        最近更新 更多