群的欧氏距离



我想计算一个点与图像中所有其他点之间的欧几里得距离,并可能对前5-6个距离最小的点进行排序,并将它们算作附近的点。我知道我必须递归地计算所有的点但有人试过吗?我有所有点的坐标,但不确定如何递归地执行计算和对它们进行排序。我将感激任何形式的帮助。谢谢你。

简单来说,就是毕达哥拉斯定理的一个应用,h =√(a2+ b2)

from math import sqrt
def func_euclid_dist(x,y,x1,y1):
dx_sq=(x-x1)**2
dy_sq=(y-y1)**2
ed = sqrt(dx_sq+dy_sq)
return ed
distances=[]
for i, (x,y) in enumerate(first_list_of_point_xy_coords):
distances.append([])
for j, (x1,y1) in enumerate(second_list_of_point_xy_coords):
distances[i].append(func_euclid_dist(x,y,x1,y1))

这将产生一个二维数组,其中包含从第一个列表中的每个点到第二个列表中其他点的距离。

如果第一个列表只包含一个点,那就没有问题。

或者,有很多工具存在,一个选择是NumPy . linalgn .norm函数,根据这个答案:如何使用NumPy计算欧几里得距离?

最新更新