You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python基于三个坐标列表计算相邻点欧氏距离报错求助

三维相邻坐标点距离计算报错修复方案

代码存在三处核心错误,逐一修复即可正常运行:

  • 距离公式书写错误:三维欧氏距离的计算规则是√[(x₂-x₁)² + (y₂-y₁)² + (z₂-z₁)²],原代码括号位置错位,未计算同维度坐标差值,直接对前点坐标做平方后与后点坐标相减,导致根号内出现负数,输出无意义的复数结果。
  • 循环范围设置错误:列表长度为4时,原代码循环i的取值为0/1/2/3,当i取3时i+1=4超出列表最大索引(列表索引从0开始,最大为3),触发索引越界报错。
  • 变量名拼写不一致:循环条件中使用的centro_x与实际定义的center_x拼写不匹配,也会触发运行时名称错误。

修正后代码

center_x = [1.340, 8.54065065, 3.718, 5.83]
center_y = [1.672, 1.67, 7.47, 4.71]
center_z = [-0.451, -1.389, 7.523, 8.15]

# 循环范围设为长度减1,仅遍历到倒数第二个点,避免i+1越界
for i in range(len(center_x) - 1):
    dx = center_x[i+1] - center_x[i]
    dy = center_y[i+1] - center_y[i]
    dz = center_z[i+1] - center_z[i]
    dist = (dx**2 + dy**2 + dz**2) ** 0.5
    print(f'Dists : {dist}')

运行输出

Dists : 7.256679638900003
Dists : 10.889752995983885
Dists : 3.619704545953984

如果需要处理大批量坐标计算,可使用numpy向量化运算提升效率,参考代码如下:

import numpy as np

x_arr = np.array(center_x)
y_arr = np.array(center_y)
z_arr = np.array(center_z)
# 一次性计算所有相邻点间距
all_dists = np.sqrt(np.diff(x_arr)**2 + np.diff(y_arr)**2 + np.diff(z_arr)**2)
print(all_dists)

内容的提问来源于stack exchange,提问作者Jose Pinto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 09:18:21