numpy.polyval()的反函数

Yux*_*ang 6 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)
Run Code Online (Sandbox Code Playgroud)

但是我的猜测是大多数人会同意这段代码的可读性低.有什么建议?

War*_*ser 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.])
Run Code Online (Sandbox Code Playgroud)

poly1d对象实现了返回新poly1d对象的算术运算,因此p - y是一个新的poly1d:

In [22]: p - y
Out[22]: poly1d([   1,    1, -110])
Run Code Online (Sandbox Code Playgroud)

a的roots属性poly1d返回您期望的内容.