Numba 0.60版本为何无法兼容numpy.polynomial.polynomial.Polynomial?
问题解决:Numba下numpy多项式构造函数类型不匹配错误
问题原因
你遇到的错误是因为Numba将*coeffs可变参数推断为UniTuple(int64 x 2)类型,而当前Numba 0.60对numpy.polynomial.polynomial.Polynomial的实现仅支持接收numpy数组作为输入参数,不直接支持元组/UniTuple类型,导致类型匹配失败。
解决方案
在函数内部将可变参数转换为numpy数组,再传入Polynomial构造函数即可解决。
修改后的代码示例
import numba import numpy @numba.jit def test(*coeffs): # 将可变参数转换为numpy数组 coeffs_arr = numpy.array(coeffs) poly = numpy.polynomial.polynomial.Polynomial(coeffs_arr) return poly(10) c = (2,1) test(*c)
另一种写法(直接传入数组)
如果可以调整参数形式,直接传入numpy数组会更简洁:
import numba import numpy @numba.jit def test(coeffs): poly = numpy.polynomial.polynomial.Polynomial(coeffs) return poly(10) c = numpy.array((2,1)) test(c)
说明
转换为numpy数组后,参数类型符合Numba对Polynomial构造函数的支持要求,就能正常完成JIT编译并执行。
内容的提问来源于stack exchange,提问作者goweon
相关产品推荐
相关产品推荐

