Python中不指定索引的插值
我有两个长度相同的数组,比如数组x和数组y。我想找到对应于x=0.56的y值。这不是数组x中存在的值。 我希望python自己找到大于0.56(及其对应的y值)的最近值,以及小于0.56(及其对应的y值)的最近值。然后简单地插值,当x为0.56时,求y的值 当我自己找到两个x值和相应的y值的索引并将它们输入到Python中时,这很容易做到(请参阅下面的代码)。 但是python有没有办法自己找到索引呢Python中不指定索引的插值,python,arrays,indices,interpolation,Python,Arrays,Indices,Interpolation,我有两个长度相同的数组,比如数组x和数组y。我想找到对应于x=0.56的y值。这不是数组x中存在的值。 我希望python自己找到大于0.56(及其对应的y值)的最近值,以及小于0.56(及其对应的y值)的最近值。然后简单地插值,当x为0.56时,求y的值 当我自己找到两个x值和相应的y值的索引并将它们输入到Python中时,这很容易做到(请参阅下面的代码)。 但是python有没有办法自己找到索引呢 #interpolation: def effective_height(h1,h2,g1,g
#interpolation:
def effective_height(h1,h2,g1,g2):
return (h1 + (((0.56-g1)/(g2-g1))*(h2-h1)))
eff_alt1 = effective_height(x[12],x[13],y[12],y[13])
在这段代码中,我必须找到索引[12]和[13],对应于最接近的较小值0.56和最接近的较大值0.56
现在我正在寻找一种类似的技术,我只需要告诉python在x=0.56时在x的两个值之间插值,并在x=0.56时打印相应的y值
我已经看过scipy的interpolate,但不认为它在这种情况下会有帮助,尽管进一步澄清如何在我的情况下使用它也会有帮助。Numpy
interp
做你想做的事吗?:
import numpy as np
x = [0,1,2]
y = [2,3,4]
np.interp(0.56, x, y)
Out[81]: 2.56
给定两个数组,
x
和y
,您可以使用SciPy执行以下操作
from scipy.interpolate import InterpolatedUnivariateSpline
spline = InterpolatedUnivariateSpline(x, y, k=5)
spline(0.56)
关键字k
必须介于1和5之间,并且
例如:
>>> x = range(10)
>>> y = range(0, 100, 10)
>>> spline = InterpolatedUnivariateSpline(x, y, k=5)
>>> spline(0.56)
array(5.6000000000000017)
是的!很简单,很好。非常感谢。