此代码
import numba
import numpy
@numba.jit
def test(*coeffs):
poly = numpy.polynomial.polynomial.Polynomial(coeffs)
return poly(10)
c = (2,1)
test(*c)
生成错误
No implementation of function Function(<class 'numpy.polynomial.polynomial.Polynomial'>) found for signature:
>>> Polynomial(UniTuple(int64 x 2))
There are 2 candidate implementations:
- Of which 2 did not match due to:
Overload of function 'Polynomial': File: numba\core\extending.py: Line 40.
With argument(s): '(UniTuple(int64 x 2))':
No match.
During: resolving callee type: Function(<class 'numpy.polynomial.polynomial.Polynomial'>)
During: typing of call at <ipython-input-22-2355bd6d2aa0> (7)
File "<ipython-input-22-2355bd6d2aa0>", line 7:
def test(*coeffs):
poly = numpy.polynomial.polynomial.Polynomial(coeffs)
^
尽管 numba 版本 0.60 应该支持新的 numpy 多项式 APInumpy.polynomial.polynomial.Polynomial
首先,需要将该元组转换为数组,如下所示:
但是,这仍然不起作用。它给出以下错误:
阅读 Numba 的源代码和与之相关的测试,我认为它们并不意味着它支持 Polynomial 的方法。相反,它只是支持构造和返回 Polynomial 对象。
__call__
不支持 Polynomial 的方法。另外,您也可以使用 来评估多项式
polyval()
。例子: