我正在使用Numba和Anaconda,并想知道为什么
@jit(argtypes=[int16[:], int16[:]])
def index(ic, nc):
return ic[0] + nc[0] * (ic[1] + nc[1] * ic[2])
不起作用:
TypeError: 'type' object has no attribute '__getitem__'
但如果我使用@autojit
代替@jit(..)
,一切都会好的。
答案 0 :(得分:3)
阅读Numba示例时,这有点令人困惑,但实际上您需要从numba名称空间导入int16
。
您看到的错误与从NumPy导入int16
一致。因此,如果在文件的顶部,您的代码如下所示:
from numba import *
from numpy import *
然后你会不小心用它的NumPy定义覆盖int16。有两个修复。首先,您可以只交换导入的顺序:
from numpy import *
from numba import *
或者,更准确地说,您可以在没有*的情况下导入名称空间,并明确指出您需要的内容:
import numba as nb
@nb.jit(argtypes=[nb.int16[:], nb.int16[:]])