基于Numpy的双时间序列线性插值合并摇杆数据优化方案问询
简化摇杆双时间序列线性插值与合并的实现方法
你可以利用numpy.interp函数直接实现线性插值,这能大幅简化代码逻辑,避免手动维护索引和条件判断的繁琐操作。以下是优化后的实现:
import numpy as np import matplotlib.pyplot as plt # 示例数据 X = np.array([[0.98092103, 1013], [1.01400101, 375], [1.0561214, -8484], [1.06982589, -17181], [1.09453125, -16965]]) Y = np.array([[0.98092103, 534], [1.00847602, 1690], [1.0392499, -5327], [1.06982589, -27921], [1.10026598, -28915]]) # 提取时间戳和对应轴的数据 x_ts, x_vals = X[:, 0], X[:, 1] y_ts, y_vals = Y[:, 0], Y[:, 1] # 生成合并后的所有唯一时间戳并排序 merged_ts = np.sort(np.unique(np.concatenate([x_ts, y_ts]))) # 对X、Y轴分别进行线性插值 interp_x = np.interp(merged_ts, x_ts, x_vals) interp_y = np.interp(merged_ts, y_ts, y_vals) # 合并成最终数据 merged_data = np.column_stack([merged_ts, interp_x, interp_y]) # 绘制参数化2D图 plt.plot(interp_x, interp_y) plt.xlabel('X轴运动') plt.ylabel('Y轴运动') plt.title('摇杆运动轨迹') plt.show()
关键优化点说明
- 利用numpy内置插值函数:
np.interp默认就是线性插值,会自动处理目标时间戳在原始序列中的位置,无需手动判断时间戳是否存在、计算插值公式。 - 简化时间戳合并:用
np.unique+np.concatenate直接生成去重后的有序时间戳,替代手动遍历集合的操作。 - 代码可读性提升:逻辑清晰拆分,每一步只做单一任务,避免嵌套循环和复杂的索引跟踪。
内容的提问来源于stack exchange,提问作者TimH
相关产品推荐
相关产品推荐

