我有两个列表,例如list = [[date, value], [date, value] ... [date, value]]
我试图从这两个列表中获取插值列表。
起初,我有多项式系数:
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
我不需要插值日期,只需要值。换句话说,我只想更改x_list(而不是日期)中的值。日期是两个列表中的常量。
答案 0 :(得分: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])
dates
[D]
单位,int64
个数字:
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]')
这不是一个完整的解决方案,但我认为这是将日期视为可以在polyfit
中使用的数值的一步。