numpy中的线性插值

时间:2014-01-13 07:14:41

标签: python numpy scipy

我有2个numpy数组

X = [[2 3 6], [7 2 9], [7 1 4]]
a = [0  0.0005413307    0.0010949014    0.0015468832    0.0027740823    0.0033288284]
b = [0  0.0050251256    0.0100502513    0.0150753769    0.0201005025    0.0251256281]

new = []
for z in range(3):
     new.append(interp1d(a, z[0], b, 'linear'))

我收到的错误是:

    if xi is not None and shape[axis] != len(xi):
TypeError: tuple indices must be integers, not str

我需要找到相同的线性插值。我该怎么找到?

我有关于时间a的值X但是我想找到时间b的插值。 对于每个a [i]和b [i]?

,线性插值将给出3个点,如X所示

2 个答案:

答案 0 :(得分:3)

你把参数放错了。流动是interp1d的帮助信息,请查看:

interp1d(x, y, kind='linear', axis=-1, copy=True, bounds_error=True,fill_value=np.nan)
     

插入一维功能。

     

xy是用于近似某个函数f的值数组:   y = f(x)

     

该类返回一个函数,其调用方法使用插值   找到新点的价值。

答案 1 :(得分:2)

interp1d是一个函数,其返回值是一个新函数。然后可以使用给定插值范围中的值调用此新函数:

from scipy.interpolate import interp1d

x1 = [ 0.,          0.04007922,  0.04723573,  0.05440107,  0.06178645,  0.06837938]
x2 = [ 0.,          0.00502513,  0.01005025,  0.01507538,  0.0201005,   0.02512563]
f = interp1d(x1, x2)

f([0.0, 0.01, 0.02, 0.03, 0.068])
#array([ 0.        ,  0.0012538 ,  0.0025076 ,  0.0037614 ,  0.02483647])