“test_numba”下面的函数给出了一个错误:“不能输入空列表”,但它没有numba编译。
def test(list_test,count):
test_list =[]
for all in list_test:
test_list.append(all)
if count ==1:
return np.asarray(test_list, dtype=int)
else:
return np.asarray([1,2,3,4],dtype=int)
test_numba = numba.jit("int64[:](int32[:],int32)")(test)
# calling numba function
test_numba(np.asarray([1,2,3,4],dtype=int),1)
# calling python function
test(np.asarray([1,2,3,4],dtype=int),1)
答案 0 :(得分:0)
Numba签名期待Numpy
- 数组。如果你只是省略签名,你可以使它工作:
test_numba = numba.jit()(test)
但由于这会回到Python列表中,因此无法提供任何加速。
通过签名,您强制numba假设int32
1D numpy.array
作为第一个参数传递,标量uint
作为第二个参数传递。该函数应返回int64
1D numpy.array
。但实际上你返回一个列表,所以numba
无法编译该函数。