Python 如何在numba.njit()中使用numpy.array的索引?
如何在numba.njit()中使用numpy.array的索引?在下面的示例中,如果使用numba.njit,代码将退出并出现错误。我发现这个错误是由于“b=a[idx]”。但事实上,这在python中应该是正确的。如何在numba中纠正这一点?thxPython 如何在numba.njit()中使用numpy.array的索引?,python,numpy,numpy-ndarray,numba,Python,Numpy,Numpy Ndarray,Numba,如何在numba.njit()中使用numpy.array的索引?在下面的示例中,如果使用numba.njit,代码将退出并出现错误。我发现这个错误是由于“b=a[idx]”。但事实上,这在python中应该是正确的。如何在numba中纠正这一点?thx @numba.njit() def test(a): idx = np.where(a>5) b = a[idx] return b a = np.linspace(0,15,16).reshape([4,4
@numba.njit()
def test(a):
idx = np.where(a>5)
b = a[idx]
return b
a = np.linspace(0,15,16).reshape([4,4])
b = test(a)
签出此文档 b=试验(a) 尝试在此处更改变量,如下所示 k=test(a),我认为test(a)=b,这意味着像b=b 如果可以的话,试试看……假设也支持高级索引的子集:只允许一个高级索引,并且它必须是一维数组 如果您在不使用numba的情况下运行代码,您可以看到结果仍然是1D数组:
>>> a[np.where(a > 5)]
array([ 6., 7., 8., 9., 10., 11., 12., 13., 14., 15.])
因此,您可以直接在1D阵列上操作:
@nb.njit()
def test(a):
a = a.ravel()
idx = np.where(a > 5)
b = a[idx]
return b
或者更简单:
@nb.njit()
def test(a):
a = a.ravel()
return a[a > 5]