【发布时间】:2019-07-25 02:57:19
【问题描述】:
这里使用np.min有什么问题?为什么 numba 不喜欢在该函数中使用列表,还有其他方法可以让 np.min 工作吗?
from numba import njit
import numpy as np
@njit
def availarray(length):
out=np.ones(14)
if length>0:
out[0:np.min([int(length),14])]=0
return out
availarray(3)
该函数在min 下运行良好,但np.min 应该更快...
【问题讨论】:
-
一般来说,应该避免在 Python 列表上使用 NumPy 函数,而在 NumPy 数组上使用 Python 函数(例如参见 stackoverflow.com/a/49908528/539338)。但这不适用于 numba 函数,因为 numba 不使用 Python 列表,而是使用 Python 列表的同构类型版本。 Numba 还将所有对内置或 NumPy 函数的函数调用替换为它们自己的实现。因此,您不能真正根据非 numba 实现的经验对 numba 函数的性能进行争论 - 确实需要衡量性能。