python - 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 实现这一目标?
解决方案
给你(最后第一行是最小距离):
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
推荐阅读
- assembly - 我怎样才能组装这个 MIPS shellcode?
- r - 使用 R 将数据框的值替换为符号
- java - RecyclerView 返回的 ListAdapter 应该是抽象错误
- arrays - C ++ 11中的数组多态性
- python - 如何加快 Python 中 for 循环的执行速度?
- flutter - 尽管我有该类的实例,但无法访问来自 redux 状态事件的值
- solr - Solr 中的负提升(bq 与 bf)
- aws-sam - 重新部署堆栈时 ManagedPolicy 未更新
- python - 如何从可被x数整除的列表中获取每个项目
- swift - 将前导零添加到将与文本一起打印在字符串中的数字