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

时间:2014-10-18 11:12:21

标签: 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! 

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

1 个答案:

答案 0 :(得分: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)

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

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

附上您的注释:x_value = interp(y_value, j, t)