将scipy.interpolate.interp1d包装成一个函数

时间:2017-12-23 02:27:53

标签: scipy python-3.6

我正在努力将scipy.interpolate.interp1d包装成一个函数。 我的输入pd.df:

In [108]: rates.tail()
Out[108]: 
               28      91      182     364
Date                                      
2017-12-18  0.0125  0.0138  0.0151  0.0169
2017-12-19  0.0125  0.0137  0.0151  0.0170
2017-12-20  0.0122  0.0138  0.0151  0.0171
2017-12-21  0.0120  0.0135  0.0154  0.0172
2017-12-22  0.0114  0.0133  0.0154  0.0172

这有效,但需要将其包含在以date作为参数的函数中:

x = np.array(rates.columns[0:4])
y = np.array(rates.loc[date])
f = interp1d(x, y, kind='cubic', fill_value='extrapolate')

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

似乎函数应该采用日期和数值(下面称为t)。所以它可能是这样的:

def interpolated(t, date): 
    x = np.array(rates.columns[0:4])
    y = np.array(rates.loc[date])
    f = interp1d(x, y, kind='cubic', fill_value='extrapolate')
    return f(t)

(如果将治疗作为参数而不是从全局范围中获取,也可以传入rates