[英]Python: Obtain the row number of a CSV file which has the minimum Euclidean distance from a point
我有一個CSV 文件,其中包含 R、G、B 列。這三列代表空間中某個點的 [X、Y、Z] 坐標。 我也有一個坐標為:[78, 95, 44] 的點 A。
我想要實現的是計算 CSV 文件上的每個點(由 R、G、B 列組成)的該點 A 的歐幾里得距離。 計算完所有距離后,我想獲得具有最小歐幾里得距離的文件的行數。
以下代碼計算兩點之間的歐幾里得距離:
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 實現這一目標?
在這里你 go (最后第一行是最小距離):
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.