所以我有一个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值!!
答案 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)