numpy.polyval()的反函数

时间:2014-05-20 01:21:01

标签: python numpy

我想知道是否有一个方便的np.polyval()函数的反函数,其中我给出y值并解决x?

我知道我可以这样做的一种方式是:

import numpy as np

# Set up the question
p = np.array([1, 1, -10])
y = 100

# Solve
p_temp = p
p_temp[-1] -= y
x = np.roots(p_temp)

然而,我的猜测是大多数人会同意这段代码的可读性低。有什么建议吗?

1 个答案:

答案 0 :(得分:12)

这样的事情怎么样?

In [19]: p = np.poly1d([1, 1, -10])  # Use a poly1d to represent the polynomial.

In [20]: y = 100

In [21]: (p - y).roots
Out[21]: array([-11.,  10.])

poly1d对象实现算术运算以返回新的poly1d对象,因此p - y是新的poly1d

In [22]: p - y
Out[22]: poly1d([   1,    1, -110])

roots的{​​{1}}属性会返回您期望的内容。