【问题标题】:numba type error when using both python3 and python 2.7同时使用 python3 和 python 2.7 时出现 numba 类型错误
【发布时间】:2017-04-20 20:42:14
【问题描述】:

我有两个 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 函数工作。任何建议将不胜感激。

【问题讨论】:

  • 问题解决了,只需要注意工作机的默认设置。感谢玛丽安和乔希的帮助!
  • 您无需评论您已解决该问题。只需accept an answer 即可解决您的问题。

标签: python numba


【解决方案1】:

如果您查看错误消息,它告诉您的是 nbody 的输入与您分配的签名不匹配(我在 timeit 调用之外运行它以使其更明确)。看起来好像您正在使用默认为 64 位的机器,但您说 body_pairs 应该是 int32[:,:]

解决办法是在创建这个变量时明确指定类型:

BODY_PAIRS = np.array(list(itertools.combinations(np.arange(BODIES.shape[0]), 2)), dtype=np.int32)

注意dtype的规范。

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2012-08-19
    • 2017-10-31
    • 2015-05-06
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2017-11-21
    • 2021-09-06
    相关资源
    最近更新 更多