(重新)用numba创建“numpy.sum”(支持“轴”沿着它减少)

时间:2017-01-28 02:12:02

标签: python numpy vectorization numba

我想重新创建一个类似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=xx整数)和
  • axis=(x,y)

nopython=True模式下?

0 个答案:

没有答案