如何将自定义NumPy函数添加到原始源代码中



为了了解NumPy的源代码,我想从添加自己的伪自定义函数开始。我已经按照他们的文档建立了一个开发环境,并按照建议($ python setup.py build_ext -i; export PYTHONPATH=$PWD(对NumPy进行了就地构建。

现在我想添加这个功能:

def multiplybytwo(x):
"""
Return the double of the input
"""
y = x*2
return y

但我不知道把它放在哪里,这样代码才能正常运行:

import numpy as np
a = np.array([10])
b = np.mulitplybytwo(a)

这个答案是应OP的要求添加的。

正如我在上面的评论中所提到的,(许多(起点是研究numpy库中的顶级__init__.py文件。破解这个打开并阅读各种导入和初始化设置。这将有助于了解新函数的位置,正如您可能从其他(熟悉的(顶级函数的导入位置看到的那样。

注意:
虽然我通常不鼓励将自定义功能添加到库中(因为升级时所有更改都会丢失(,但我理解为什么您会对此进行研究。只要记住前一句话中所说的内容。

Python中的所有东西都是一个对象!

所以,你可以把你的函数添加到NumPy中,就像你说x = 1一样

见下文:

>>> def multiplybytwo(x):
...     """
...     Return the double of the input
...     """
...     y = x*2
...     return y
>>> import numpy as np
>>> np.mulitplybytwo = multiplybytwo   ## HERE IS THE "TRICK"
>>> a = np.array([10])
>>> b = np.mulitplybytwo(a)
>>> b
array([20])
>>> print(b)
[20]

在这一行中,您在NumPy中创建了一个自定义函数,并表示该函数是您定义的函数。

您可以使用id进行校样

>>> id(np.multiplybytwo)
140489045965856
>>> id(multiplybytwo)
140489045965856
>>>

两个id是相同的。

如果你想把你的函数添加到Numpy,我会:

  1. 克隆github repogit clone https://github.com/numpy/numpy.git
  2. /numpy/core中的某个位置编写函数
  3. 编译它:python setup.py build_ext --inplace--有关编译/安装的更多信息:https://numpy.org/doc/stable/user/building.html
  4. 要想更深入地了解Numpy,请查看如何做出贡献:https://numpy.org/devdocs/dev/index.html

最新更新