如果我定义一个函数whit two array,例如:
from numpy import *
x = arange(-10,10,0.1)
y = x**3
如何提取y(5.05)的值,插值两个更接近的点y(5)和y(5.1)的值?现在,如果我想找到这个值,我使用这个方法:
y0 = y[x>5][0]
我应该为y
获得x=5.1
的值,但我认为存在更好的方法,可能它们是正确的。
答案 0 :(得分:4)
有numpy.interp,如果线性插值就足够了:
>>> import numpy as np
>>> x = np.arange(-10, 10, 0.1)
>>> y = x**3
>>> np.interp(5.05, x, y)
128.82549999999998
>>> 5.05**3
128.787625
scipy
中有许多工具用于插值[docs]:
>>> import scipy.interpolate
>>> f = scipy.interpolate.UnivariateSpline(x, y)
>>> f
<scipy.interpolate.fitpack2.LSQUnivariateSpline object at 0xa85708c>
>>> f(5.05)
array(128.78762500000025)
答案 1 :(得分:4)
在numpy / scipy中有这个功能..
import numpy as np
np.interp(5.05, x, y)