2

我正在将 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(..)一切都很好。

4

1 回答 1

3

阅读 Numba 示例时这有点令人困惑,但您实际上需要int16从 numba 命名空间导入。

您看到的错误与int16从 NumPy 导入一致。因此,如果在文件的顶部,您的代码如下所示:

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[:]])
于 2013-11-11T13:57:53.587 回答