Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中不指定索引的插值_Python_Arrays_Indices_Interpolation - Fatal编程技术网

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

我有两个长度相同的数组,比如数组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,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)

是的!很简单,很好。非常感谢。