NumPy:源代码中的'arange`和`array`函数定义在哪里?

时间:2018-05-08 04:31:23

标签: python numpy

我在寻找NumPy中arangearray函数的源代码,但我无法找到它:https://github.com/numpy/numpy/search?utf8=%E2%9C%93&q=%22def+arange%22+path%3Anumpy%2Fcore&type=

有人能开导我吗?

2 个答案:

答案 0 :(得分:4)

numpy.arraynumpy.arange是用C语言写的。你可以说,因为当你看到它们时会说“内置”:

>>> numpy.array
<built-in function array>
>>> numpy.arange
<built-in function arange>

这意味着没有def声明。相反,我们看看他们来自哪个模块:

>>> numpy.array.__module__
'numpy.core.multiarray'
>>> numpy.arange.__module__
'numpy.core.multiarray'

导航到相应的source file,并查看控制模块导出功能的array

{"array",
    (PyCFunction)_array_fromobject,
    METH_VARARGS|METH_KEYWORDS, NULL},
...
{"arange",
    (PyCFunction)array_arange,
    METH_VARARGS|METH_KEYWORDS, NULL},

numpy.arraynumpy.arange对应该文件中的_array_fromobjectarray_arange。但这并不是所有工作都发生的地方。您需要继续挖掘以找到所有相关代码。

答案 1 :(得分:2)

这些是在multiarraymodule.c中定义的:

https://github.com/numpy/numpy/blob/820765d762513510a8e46f108e8bc8b366127f8f/numpy/core/src/multiarray/multiarraymodule.c#L4279

Python中的

array函数在C中为_array_fromobject(),在Python中arange函数在{C}中为array_arange()