首页 > 解决方案 > Python:获取与点具有最小欧几里得距离的CSV文件的行号

问题描述

我有一个包含 R、G、B 列的CSV 文件。这三列代表空间中某个点的 [X、Y、Z] 坐标。我也有一个坐标为:[78, 95, 44] 的点 A。

我想要实现的是计算该点 A 与 CSV 文件上每个点(由 R、G、B 列组成)的欧几里得距离。计算完所有距离后,我想获得具有最小欧几里得距离的文件的行数。

以下代码计算两点之间的欧几里得距离:

import math
p1 = [4, 0, 9]
p2 = [6, 6, 3]
distance = math.sqrt( ((p1[0]-p2[0])**2)+((p1[1]-p2[1])**2)+((p1[2]-p2[2])**2) )

print(distance)

如何使用 Python 实现这一目标?

标签: pythonpython-3.xpandasmath

解决方案


给你(最后第一行是最小距离):

import pandas as pd
import math

def calc_distance(x):
    A = [4, 0, 9] # replace this with your A values
    return math.sqrt(((A[0]-x['R'])**2)+((A[1]-x['G'])**2)+((A[2]-x['B'])**2))

    df = pd.read_csv('fuel_veg_cover.csv')
   df['distance'] = df.apply(calc_distance, axis=1)
   df = df.sort_values(by=['distance'])
   df

推荐阅读