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
所以我想每秒产生一个新的纬度和经度。
我已经绘制了相应的纬度和经度,并希望用点数填充带插值数据的间隙。
答案 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
中有几个工具。