如何计算每帧总距离的绝对变化?非列表整体欧氏距离
逐帧空间距离绝对变化的计算方案
你要的是相邻帧之间的空间位置欧氏距离(每帧相对于前一帧的位移绝对值),完全不需要嵌套循环,用numpy的向量化运算就能高效搞定,比for循环快得多,尤其是长列表场景。
实现代码
基于你已有的numpy数组,直接添加以下代码即可:
# 计算相邻帧的坐标差值(后一帧减前一帧) dx = X_cords1[1:] - X_cords1[:-1] dy = Y_cords1[1:] - Y_cords1[:-1] dz = Z_cords1[1:] - Z_cords1[:-1] # 计算每帧的绝对距离变化(三维欧氏距离) frame_dist_changes = np.sqrt(dx**2 + dy**2 + dz**2) # 可选:补全第一帧的NaN值,让结果长度与原数据一致 frame_dist_changes_full = np.insert(frame_dist_changes, 0, np.nan) data['dist_change'] = frame_dist_changes_full
关键说明
- 数组切片
[1:]和[:-1]可以一次性生成所有相邻元素的差值,避免手动写循环。 - 用勾股定理直接计算三维空间的欧氏距离,得到的就是每帧相对于前一帧的位移大小(即你要的“总距离绝对变化”)。
- 补全NaN是因为第一帧没有前一帧,没有变化值,这样结果可以直接和原DataFrame的每一行对应。
内容的提问来源于stack exchange,提问作者Stallionz1707
相关产品推荐
相关产品推荐

