2017-12-23 9 views
0

에 랩핑하면 scipy.interpolate.interp1d를 함수로 랩핑하는 데 어려움을 겪고 있습니다. 내 입력 pd.df :scipy.interpolate.interp1d를 함수

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') 

감사를!

+0

interp1d는 1 차원 간격의 보간을 의미합니다. 귀하의 x 값은 4 개의 열이있는 배열입니까? 보간 될 정확히 무엇입니까? – FTP

+0

주어진 날짜에 대해 1 차원입니다. 주어진 날짜에 요율을 보간해야합니다. – steff

답변

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에 전달할 수 있습니다 대신 글로벌 범위를 복용의 매개 변수로이다).

+0

대단히 Crazy Ivan! 그게 정확히 내가 무엇을 찾고 있었는지. – steff