Python numba @vectorize/@guvectorize

When learning numba, the concept of 'ufunc' is mentioned frequently.

Ufunc means Universal Functions, it apply certain computation on every single elements inside a numpy array.

@vectorize, as a decorator, basically converts the decorated function to a ufunc. I understand it as a much simpler way of .apply() or map() with a for loop iterating every single elements inside an array.

This is useful also because creating a ufunc requires coding in C, which could be hard and not so straight forward.

@guvectorize, on the other hand, is slightly different. This decorator won't return the underlying function's return, but return the last argument in the function. For example, in the offical file:

@guvectorize([(int64[:], int64, int64[:])], '(n),()->(n)')
def g(x, y, res):
    for i in range(x.shape[0]):
        res[i] = x[i] + y

As shown above, 'res' is the supposed return value, and it is more argument in the function 'g()'.

Like @jit, @vectorize and @guvectorize both support parameter (nopython=True) to avoid falling back to object mode.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值