Python 计算 Excel 中两组二维坐标点之间的距离并导出
使用 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')
代码说明:
- 导入库: 首先,导入
openpyxl库用于处理 Excel 文件,导入numpy库用于计算距离。 - 读取数据: 使用
openpyxl.load_workbook()函数加载 Excel 文件,并使用active属性获取活动工作表。 - 提取坐标点: 使用
iter_rows()方法遍历指定行范围,提取两组坐标点数据,存储在列表中。 - 计算距离: 使用嵌套循环遍历两组坐标点,利用
numpy.linalg.norm()函数计算欧几里得距离,并将结果存储在distances列表中。 - 创建新文件: 使用
openpyxl.Workbook()创建新的 Excel 工作簿和工作表。 - 写入数据: 遍历
distances列表,将距离数据写入新工作表的单元格中。 - 保存文件: 使用
save()方法保存新的 Excel 文件。
注意事项:
- 代码中的文件名、行号范围等需要根据实际情况修改。
- 可以根据需要添加错误处理、数据类型转换等功能。
- 本文仅提供基本示例,实际应用中可根据需求进行扩展和优化。
希望本文能帮助您使用 Python 处理 Excel 中的坐标点数据!
原文地址: https://www.cveoy.top/t/topic/wu1 著作权归作者所有。请勿转载和采集!