我想重新创建一个类似numpy.sum
的函数。我不打算重新创建numpy.sum
,而是使用相同的原则重新创建类似的函数:迭代项目并对每个项目执行某些操作然后返回结果。
如何使一个 numba函数能够理解numpy函数的“沿轴减x
”行为。
假设基本函数看起来像这样(取自the numba source code):
def numba_sum(arr):
s = 0.
for val in np.nditer(arr):
s += val.item()
return s
如果我numba.jit
,那么效果很好,但不支持任何axis
- 参数。
numba.vectorize
并不是更好,它提供.reduce(axis=x)
,但仅当函数是二进制(接受两个参数)时,上面的那个不是,即使那时它只支持一个标量轴。
numba.guvectorize
可以提供帮助,但我需要明确定义何时创建函数沿哪个轴(如果有的话)我想减少函数。
简而言之,我如何才能使numba_sum
函数像[{3}}一样工作,也就是说,它应该支持:
axis=None
,axis=x
(x
整数)和axis=(x,y)
在nopython=True
模式下?