NumPy: Где в исходном коде определены функции `arange` и` array`? - PullRequest
0 голосов
/ 08 мая 2018

Я искал исходный код для функций arange и array в NumPy, но не смог его найти: https://github.com/numpy/numpy/search?utf8=%E2%9C%93&q=%22def+arange%22+path%3Anumpy%2Fcore&type=

Может ли кто-нибудь просветить меня?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

numpy.array и numpy.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'

перейдите к соответствующему исходному файлу и посмотрите на массив , управляющий экспортируемыми функциями модуля:

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

numpy.array и numpy.arange соответствуют _array_fromobject и array_arange в этом файле. Это не то, где вся работа происходит, все же. Вам нужно будет продолжать копать, чтобы найти весь соответствующий код.

0 голосов
/ 08 мая 2018

Они определены в multiarraymodule.c:

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

array функция в Python - _array_fromobject() в C, а arange функция в Python - array_arange() в C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...