簡體   English   中英

不使用Python指定索引的插值

[英]Interpolation without specifying indices in Python

我有兩個相同長度的數組,比如數組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])

在這部分代碼中,我必須找到與最接近的較小值0.56和最接近的較大值0.56對應的索引[12]和[13]。

現在,我正在尋找一種類似的技術,我將告訴python在x = 0.56的兩個x值之間進行內插,並在x = 0.56時打印y的相應值。

我已經看過scipy的插值法了,但是在這種情況下它並不會有幫助,盡管進一步闡明在我的情況下如何使用它也會有所幫助。

Numpy interp做什么嗎?:

import numpy as np
x = [0,1,2]
y = [2,3,4]
np.interp(0.56, x, y)
Out[81]: 2.56

給定兩個數組xy ,您可以使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM