Numba - TypeError:'type'对象没有属性'__getitem__

时间:2013-11-09 22:05:13

标签: typeerror jit numba

我正在使用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(..),一切都会好的。

1 个答案:

答案 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[:]])