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

Python中直接计算两个三维点集所有点对欧氏距离的方法

完全可以不用嵌套循环实现,两种常用的高效实现方式如下:

方法1:使用scipy自带的cdist(推荐)

scipy.spatial.distance模块已经封装了专门计算两个点集两两距离的cdist方法,直接调用即可:

import numpy as np
from scipy.spatial.distance import cdist

# 直接计算距离矩阵
dist_matrix = cdist(set_1, set_2, metric="euclidean")

返回的dist_matrix是形状为(len(set_1), len(set_2))的二维数组,第i行第j个元素对应set_1[i]到set_2[j]的欧氏距离,和你嵌套循环得到的结果完全一致,底层为矢量化运算,性能远高于Python层的循环。

方法2:仅用numpy广播实现

如果不想依赖scipy,也可以直接用numpy的广播机制实现:

dist_matrix = np.sqrt(np.sum((set_1[:, np.newaxis] - set_2) ** 2, axis=2))

这个实现的输出和cdist结果完全相同,仅依赖numpy即可运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:45:03