gpt4 book ai didi

python - Numpy/Scipy 如何将 C 函数转换为向量化的 Python 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:38 27 4
gpt4 key购买 nike

据我了解,矢量化 numpy 函数比 Python 循环更快,因为循环是在 C 或 Fortran 中完成的。我想知道这发生在源代码的哪个位置。

例如,scipy.special.bdtr 二项式 CDF 函数接受类似数组的参数 k,n,p 并将返回一个 ndarray,前提是参数是可广播的。文档说 scipy.special.bdtr 是 Cephes 数学函数库中例程的包装器。在 Github 上挖掘源代码,我发现了一个 scipy/special/cephes/bdtr.c 文件,其中包含例程的 C 代码;以下是我认为是相关 C 函数的前三行:

double bdtr(k, n, p)

int k, n;

double p;

看来底层 C 函数不对数组进行操作,我找不到将此函数转换为对数组进行操作的 Python 函数的源代码。

最佳答案

对于 scipy.special 函数,C 代码仅包含函数的“内核”,即如何将函数应用于标量。然后将这些中的每一个都包装成一个 ufunc自动生成 Cython代码。为此,它使用 C 头文件,如 scipy/special/cephes.h , Cython 声明文件,如 scipy/special/_cephes.pxd , 文件 scipy/special/functions.json ,其中列出了为 scipy.special 生成的所有函数,最后是 scipy/special/_generate_pyx.py ,这是实际生成 Cython 代码的地方。

关于python - Numpy/Scipy 如何将 C 函数转换为向量化的 Python 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54237595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com