Python插值时间

时间:2014-08-20 18:40:08

标签: python interpolation

python中的新手所以我希望我正确地问。

我有一大堆数据,我想每秒插值一次,并用适当的纬度和经度填补空白:

  Lat     Long    Time
-87.10   30.42    16:38:49
                      .
                      .
                      .
-87.09   30.40    16:39:22
                      .
                      .
                      .
-87.08   30.40    16:39:30

所以我想每秒产生一个新的纬度和经度。

我已经绘制了相应的纬度和经度,并希望用点数填充带插值数据的间隙。

1 个答案:

答案 0 :(得分:0)

如果线性插值对您来说足够好,您可以将numpy.interp函数与要用于插值的时间数组以及从输入文件中读取的时间和经度/纬度数据点一起使用(时间必须增加,因此您可能需要对数据进行排序。)

要读取文件的数据,您可以使用numpy.loadtxt功能添加转换器将时间转换为越来越多的数字:

import numpy as np
from matplotlib.dates import strpdate2num

lon, lat, time = np.loadtxt('data.txt', skiprows=1,
        converters={2:strpdate2num('%H:%M:%S')}, unpack=True)

然后,您可以使用interp函数插入经度和纬度值。 linspace函数的最后一个参数给出了时间插值数据中的点数。

interp_time = np.linspace(time[0], time[-1], 100)
interp_lon = np.interp(interp_time, time, lon)
interp_lat = np.interp(interp_time, time, lat)

对于更复杂的线性插值,scipy.interpolation中有几个工具。