我有两个python环境(python3和python2.7),我使用它们来测试涉及numba的程序。尽管有Python的版本,我得到了相同的TypeError消息,而我的朋友告诉我,如果他使用Python 2.7,程序只会抛出错误,但是在他的Python3设置中工作。
错误如下:
TypeError:参数类型没有匹配的定义int64,int64,int64,array(float64,3d,C),array(int64,2d,C)
我试图在虚拟Python3环境中更新软件包,但它仍然无法正常工作。代码有点太长了,但我的问题只是为什么我的设置无法使用numba功能。任何建议将不胜感激。
答案 0 :(得分:3)
如果您查看错误消息,它告诉您的是nbody
的输入与您指定的签名不匹配(我在timeit
调用之外运行它以使更多显式)。看起来好像您正在使用默认为64位的计算机,但您说body_pairs
应该是int32[:,:]
。
解决方案是在创建此变量时明确指定类型:
BODY_PAIRS = np.array(list(itertools.combinations(np.arange(BODIES.shape[0]), 2)), dtype=np.int32)
请注意dtype
的规范。