我是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)
答案 0 :(得分:2)
我没有找到关于这个主题的任何文档,但是根据我Googled the topic和dug through the source code时出现的内容,“反映”列表是列表必须更改的列表在JITted函数完成后,在Python中可见(反映)。由于我不知道的原因,反射列表被视为与Numba类型系统中的非反射列表不同的类型。该概念可能特定于nopython模式;我不确定,我无法测试它。
您已声明您的函数采用了非反射列表,但它需要采用反射列表。您需要将reflected=True
添加到内部List(int64)
调用,也可能添加到外部调用。