Numba中Python列表的基本问题;到底发生了什么?

时间:2017-04-02 08:47:43

标签: python list numba

我是Numba的初学者。对于我的生活,我无法通过Numba函数来操作一个简单的列表 哎呀,我甚至无法弄清楚如何指定签名。

以下是这个例子。怎么了? (什么"反映清单"?)我该如何解决?

from numba import *
from numba.types import *

@jit(List(int64)(List(int64)), nopython=True)
def foo(a): a[0] += a[0]; return a

foo([1])

给出

Traceback (most recent call last):
  File "<pyshell#5>", in <module>
    foo([1])
  File "numba\dispatcher.py", line 219, in _explain_matching_error
    raise TypeError(msg)
TypeError: No matching definition for argument type(s) reflected list(int64)

1 个答案:

答案 0 :(得分:2)

我没有找到关于这个主题的任何文档,但是根据我Googled the topicdug through the source code时出现的内容,“反映”列表是列表必须更改的列表在JITted函数完成后,在Python中可见(反映)。由于我不知道的原因,反射列表被视为与Numba类型系统中的非反射列表不同的类型。该概念可能特定于nopython模式;我不确定,我无法测试它。

您已声明您的函数采用了非反射列表,但它需要采用反射列表。您需要将reflected=True添加到内部List(int64)调用,也可能添加到外部调用。