numpy的interp函数 - 如何为给定的y值找到x的值?

Omk*_*tra 2 python arrays numpy

所以我有一个x值(按递增顺序)和相应的y值的数组.Numpy的interp函数接受X值,以及x和y数组.如何获得给定Y值的X值?例如,如果y = 0,则x =?

干杯!

码:

j = (((1840/(2*pi))**0.5)*exp(phi)) - 1.0 #y axis, phi is a 1-D array
t = linspace(0, 40, 100) #x axis
a = interp(<x-value>,t,j) # this gives me the corresponding y value! 
Run Code Online (Sandbox Code Playgroud)

那么我该怎么做才能获得给定y值的x值!!

Fla*_*ois 5

y_interp = np.interp(x_interp, x, y)y_interp = f(x_interp)根据先前的插值产生函数的插值y = f(x),其中x.size = y.size,x_interp.size = y_interp.size.

如果希望x作为y的函数,则必须构造反函数.正如@NPE指出的那样,你必须确保x和y总是在增加.检查这个的简单方法是使用

np.all(np.diff(x) > 0)
np.all(np.diff(y) > 0)
Run Code Online (Sandbox Code Playgroud)

现在找到反函数实际上非常简单:你必须反转x和y的角色(因为我们处理插值).

用我的记号:x_value = np.interp(y_value, x, y).

用你的记号: x_value = interp(y_value, j, t)