1 问题描述
我现在有三个2D矩阵,每一行是两个元素,代表经纬度;不同矩阵的行数不同
现在希望通过线性插补,使得每个2D矩阵行数相同
pth_lst=[[[1,2],[1,3],[3,4]],[[3,4],[5,6],[7,8],[9,10],[11,12],[13,14],[15,16]],[[2,4],[5,8]]]
2 解决方法
2.1 导入库
import numpy as np
from scipy.interpolate import interp1d
2.2 计算各个2D矩阵需要插补到的行数
max_len=0
for i in pth_lst:max_len=max(max_len,len(i))
max_len
#7
2.3 进行插补
inter_lst=[]
#结果列表for i in pth_lst:tmp=np.array(i)current_l=tmp.shape[0]new_index=np.linspace(0,current_l-1,max_len)#目标自变量坐标(首末位置和原来的2D矩阵一样,间隔不再是1)interpolate_path=interp1d(np.arange(current_l),i,axis=0)#对当前2D矩阵进行线性插补inter_lst.append(interpolate_path(new_index).tolist())
inter_lst
'''
[[[1.0, 2.0],[1.0, 2.3333333333333335],[1.0, 2.6666666666666665],[1.0, 3.0],[1.6666666666666665, 3.333333333333333],[2.333333333333333, 3.6666666666666665],[3.0, 4.0]],[[3.0, 4.0],[5.0, 6.0],[7.0, 8.0],[9.0, 10.0],[11.0, 12.0],[13.0, 14.0],[15.0, 16.0]],[[2.0, 4.0],[2.5, 4.666666666666667],[3.0, 5.333333333333333],[3.5, 6.0],[4.0, 6.666666666666666],[4.5, 7.333333333333333],[5.0, 8.0]]]
'''