在中添加矢量化的ufunction scipy.special
¶
中的许多函数 special
是标量函数的矢量化版本。标量函数是手工编写的,矢量化所需的循环是自动生成的。本节讨论添加新的矢量化特殊函数所需的步骤。
添加新的矢量化函数的第一步是编写相应的标量函数。这可以用Cython、C、C++或Fortran来完成。如果从头开始,那么Cython应该是首选,因为对于只熟悉Python的开发人员来说,代码更容易维护。如果主要代码是用Fortran编写的,则有必要在代码周围编写一个C包装器;有关此类包装器的示例,请参见 specfun_wrappers.c
。
实现标量函数后,通过将条目添加到 functions.json
。中的文档字符串 generate_ufuncs.py
说明了该格式。还可以通过向以下位置添加条目来添加新函数的文档 add_newdocs.py
;在文件中查找示例。
编写ufuncs文档的参数部分时,参数类型应为 array_like
。对于参数是否可以是实数或复值的讨论,应该保存到描述中。因此,例如,如果我们要记录Gamma函数的参数,则它应该如下所示::
Parameters
----------
z : array_like
Real or complex valued argument
记录返回节时,返回值的类型应为 scalar or ndarray
因为当给定标量作为参数时,ufuncs返回标量。还要记住,提供一个 name
因为返回值是可选的,确实对特殊函数没有帮助。因此,对于Gamma函数,我们可能会有如下内容::
Returns
-------
scalar or ndarray
Values of the Gamma function