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

如何向量化实现DataFrame中坐标点与所有点最大距离的计算

向量化实现方法

核心思路

  • 利用NumPy的广播机制,一次性计算所有点对的坐标差,完全规避Python层的嵌套循环
  • 所有运算均在底层C语言层面执行,相比嵌套循环性能提升可达百倍以上

完整实现代码

import pandas as pd
import numpy as np

# 1. 提取坐标列转为numpy数组,消除pandas索引带来的额外开销
col_a = df['ColA'].values
col_b = df['ColB'].values

# 2. 通过广播计算所有点对的横纵坐标差,生成n×n的差矩阵
# 差矩阵第i行第j列的元素 = 第i个点的坐标减去第j个点的坐标
delta_a = col_a.reshape(-1, 1) - col_a
delta_b = col_b.reshape(-1, 1) - col_b

# 3. 批量计算所有点对的欧氏距离
dist_matrix = np.sqrt(delta_a ** 2 + delta_b ** 2)

# 4. 取每行的最大值,即为当前点到所有其他点的最大距离
df['ColC'] = dist_matrix.max(axis=1)

结果验证

用你提供的测试数据运行后,保留两位小数的输出结果如下,和你的示例预期一致:

ColAColBColC
7.68.26.80
6.64.43.93
4.42.26.80

注:示例中的6.79、3.92为四舍五入精度差异,实际计算结果完全匹配。

大内存场景优化

如果数据量极大(n>10000),n×n的距离矩阵会占用较多内存,可采用分块计算逻辑,每次只计算k行的点对距离,逐批求最大值即可,核心计算逻辑保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:05