使用 Python 计算 Excel 中两组二维坐标点距离

本文将介绍如何使用 Python 读取 Excel 文件中的两组二维坐标点数据(16个和148个),计算每对坐标点之间的距离,并将结果导出到新的 Excel 表格中。

代码示例:

import openpyxl
import numpy as np

# 读取 Excel 文件
wb = openpyxl.load_workbook('coordinates.xlsx')
ws = wb.active

# 提取 16 个二维坐标点数据
coordinates_16 = []
for row in ws.iter_rows(min_row=2, max_row=17, values_only=True):
    coordinates_16.append((row[0], row[1]))

# 提取 148 个二维坐标点数据
coordinates_148 = []
for row in ws.iter_rows(min_row=19, max_row=166, values_only=True):
    coordinates_148.append((row[0], row[1]))

# 计算距离
distances = []
for coord_16 in coordinates_16:
    distances_row = []
    for coord_148 in coordinates_148:
        distance = np.linalg.norm(np.array(coord_16) - np.array(coord_148))
        distances_row.append(distance)
    distances.append(distances_row)

# 创建新的 Excel 文件
wb_new = openpyxl.Workbook()
ws_new = wb_new.active

# 写入距离数据
for i, row in enumerate(distances):
    ws_new.append([f'16_{i+1}'] + row)

# 保存文件
wb_new.save('distances.xlsx')

代码说明:

  1. 导入库: 首先,导入 openpyxl 库用于处理 Excel 文件,导入 numpy 库用于计算距离。
  2. 读取数据: 使用 openpyxl.load_workbook() 函数加载 Excel 文件,并使用 active 属性获取活动工作表。
  3. 提取坐标点: 使用 iter_rows() 方法遍历指定行范围,提取两组坐标点数据,存储在列表中。
  4. 计算距离: 使用嵌套循环遍历两组坐标点,利用 numpy.linalg.norm() 函数计算欧几里得距离,并将结果存储在 distances 列表中。
  5. 创建新文件: 使用 openpyxl.Workbook() 创建新的 Excel 工作簿和工作表。
  6. 写入数据: 遍历 distances 列表,将距离数据写入新工作表的单元格中。
  7. 保存文件: 使用 save() 方法保存新的 Excel 文件。

注意事项:

  • 代码中的文件名、行号范围等需要根据实际情况修改。
  • 可以根据需要添加错误处理、数据类型转换等功能。
  • 本文仅提供基本示例,实际应用中可根据需求进行扩展和优化。

希望本文能帮助您使用 Python 处理 Excel 中的坐标点数据!


原文地址: https://www.cveoy.top/t/topic/wu1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录