在numba函数中创建一个新的列表/数组

时间:2016-02-10 14:41:54

标签: python numba

“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)

1 个答案:

答案 0 :(得分:0)

Numba签名期待Numpy - 数组。如果你只是省略签名,你可以使它工作:

test_numba = numba.jit()(test)

但由于这会回到Python列表中,因此无法提供任何加速。

通过签名,您强制numba假设int32 1D numpy.array作为第一个参数传递,标量uint作为第二个参数传递。该函数应返回int64 1D numpy.array。但实际上你返回一个列表,所以numba无法编译该函数。

另见numba signatures and eager compilation