Python 如何循环并找到每对的hausdorff距离?
鉴于此Python 如何循环并找到每对的hausdorff距离?,python,Python,鉴于此 u = np.array([(1.0, 0.0), (0.0, 1.0), (-1.0, 0.0), (0.0, -1.0)]) v = np.array([(2.0, 0.0), (0.0, 2.0), (-2.0, 0.0), (0.0, -4.0)]) 如何找到每对的hausdorff距离以获得结果。比如说 dir
u = np.array([(1.0, 0.0),
(0.0, 1.0),
(-1.0, 0.0),
(0.0, -1.0)])
v = np.array([(2.0, 0.0),
(0.0, 2.0),
(-2.0, 0.0),
(0.0, -4.0)])
如何找到每对的hausdorff距离以获得结果。比如说
directed_hausdorff(u[i], v[i])[0] #where i is the array point
HD = directed_hausdorff(u[0],v[0])
print(HD)
--> which should be giving me a result of 1 as i'm taking the 1st array in u & v
--> however i am getting the error 'tuple index out of range'
我想这就是你要找的
import numpy as np
from scipy.spatial.distance import directed_hausdorff
u = np.array([(1.0, 0.0),
(0.0, 1.0),
(-1.0, 0.0),
(0.0, -1.0)])
v = np.array([(2.0, 0.0),
(0.0, 2.0),
(-2.0, 0.0),
(0.0, -4.0)])
for i in u:
for j in v:
print(directed_hausdorff(np.array([i]),np.array([j])))
print('\n')
编辑。。。。。。
对于相同的指数
for i,j in zip(u,v):
print(directed_hausdorff(np.array([i]),np.array([j])))
到目前为止你试过什么?对于u中的每个点,找出到v中的壁橱点的距离。以这些距离中的最大距离为准。您需要编写自己的代码。编辑您的帖子并包含您的代码是一个好主意,这样我们就可以看到您可能出错的地方。我只是引用了Hausdorff距离的定义。对于每个u,找到到每个v的距离并取最小值。现在取这些最小值中的最大值。问题是如何找出两点之间的差异?和之间的距离是sqrt((x1-x2)**2+(y1-y2)**2)。毕达哥拉斯定理,是的!这就是我要找的。有没有办法只获得u(1.0,0.0)和v(2.0,0.0)的距离对,u(0.0,-1.0)和v(0.0,4.0)?由于上面的代码对所有vIf迭代u[0],您发现这很有用,请进行投票并接受答案。:)它适用于u和v中的所有点。检查打印语句的数量(其4*4=16)是。答案是有用的。但是,有没有办法只对同一数组索引中的点运行?比如u[0]对v[0],u[1]对v[1]?因为我不需要u[0]与v[1]之间的距离,所以对于这个快速问题,我实际上如何存储结果?我尝试了append,但是只记录了最后一个值。