2017-01-17 5 views
1

두 개의 목록을 보간. 처음에는파이썬은 내가 <code>list = [[date, value], [date, value] ... [date, value]]</code></p> <p>같은 두 개의 목록을 가지고 있고이 두 목록에서 보간 된 목록을 얻으려고 날짜 값

, 나는 다항식 coeficients을 가지고있다 :

import numpy as np 

coefficients = np.polyfit(
    np.array(values_from_x_list),np.array(values_from_y_list), polynomial_degree 
) 

그런 다음, X의 목록에서 각각의 값은 내가 좋아하는, 보간하려고 :

from numpy.polynomial.polynomial import polyval 

for value in values: 
    polyval(value, coefficients[::-1]) 

내가 Y 목록에서와 같은 동일한 값을 가지고 . 여기

예를 들어 내 출력 :

x_list = [ 
    ['2016-12-05', 2.0541010116247905e-06], ['2016-12-17', 1.786168458607079e-06], ['2017-01-10', 2.397426644056526e-06] 
] 

y_list = [ 
    ['2016-12-07', 0.323], ['2016-12-19', 0.527], ['2017-01-07', 0.693] 
] 

interpolated_list = [ 
    ['2016-12-05', 0.323], ['2016-12-17', 0.527], ['2017-01-10', 0.693] 
] 

그래서, 여기에 내가 원하는 예입니다 (이 값과 같은) :

interpolated_list = [ 
    ['2016-12-05', 0.2xx], ['2016-12-07', 0.323], ['2016-12-17', 0.4xx], 
    ['2016-12-07', 0.323], ['2017-01-07', 0.693], ['2017-01-10', 0.7xx] 
] 

UPD

I 보간 된 날짜는 필요 없으며 값만 필요합니다. 다른 말로하면 x_list (날짜가 아님)의 값만 변경하려고합니다. 날짜는 두 목록의 상수입니다.

In [325]: dates.view(np.int64) 
Out[325]: array([17140, 17152, 17176], dtype=int64) 

수학에서 사용될 수 있으며, 이러한 둘 사이의 차이로서 :

In [326]: dates[1:]-dates[:-1] 
Out[326]: array([12, 24], dtype='timedelta64[D]') 

이 있지 않은 [D] 부와 dates

+0

날짜를 숫자로 가져 오는 방법을 묻는 중입니까? 그렇다면''datetime'' (https://docs.python.org/2/library/datetime.html)을 확인하십시오. 모든 날짜를 새로운 datetime 객체로 읽은 다음 각 날짜의 새 시간 축을''(date_i-date_0) .total_seconds()' '로 만들 수 있습니다. – alexblae

+0

@alexblae 나는 그것이 내가 원하는 것이라고 확신하지 못한다. x_list에 의해 y_list를 확장해야하지만 x_list의 값은 y_list의 값에 더 가깝습니다. – Sant

+0

그래서''x_list''를''y_list''에 삽입하고 삽입 된 요소에''y_list''의 값을 할당하려고합니다 데이트가 가장 가까운 곳? – alexblae

답변

0
In [317]: x_list = [ ['2016-12-05', 2.0541010116247905e-06], ['2016-12-17', 1.786168458607079e-06], ['2017-01-10', 2.397426644056526e-06]] 

In [319]: dates = np.array([i[0] for i in x_list], dtype='datetime64[D]') 
In [320]: values = np.array([i[1] for i in x_list]) 

In [321]: dates 
Out[321]: array(['2016-12-05', '2016-12-17', '2017-01-10'], dtype='datetime64[D]') 
In [322]: values 
Out[322]: array([ 2.05410101e-06, 1.78616846e-06, 2.39742664e-06]) 

int64 숫자 완전한 해결책이지만, 귀하의 polyfit에서 사용할 수있는 숫자 값으로 날짜를 처리하는 단계라고 생각합니다.