scipy.spatial.distance.directed_hausdorff¶
- scipy.spatial.distance.directed_hausdorff(u, v, seed=0)[源代码]¶
计算两个二维阵列之间的有向Hausdorff距离。
对之间的距离使用欧几里得度量来计算。
- 参数
- u(M,N)类数组
输入数组。
- v(O,N)类数组
输入数组。
- seed整型或无
本地
numpy.random.RandomState
种子。默认值为0,这是u和v的随机混洗,以保证可重现性。
- 退货
- d双倍
阵列之间的有向Hausdorff距离 u 和 v ,
- index_1集成
中对Hausdorff对有贡献的点的指标 u
- index_2集成
中对Hausdorff对有贡献的点的指标 v
- 加薪
- ValueError
如果出现以下情况,则会引发异常 u 和 v 列数不同。
参见
scipy.spatial.procrustes
两个数据集的另一种相似性检验
注意事项
描述的早期中断技术和随机抽样方法。 [1]. 尽管最坏情况下的性能是
O(m * o)
(与强力算法一样),这在实践中不太可能,因为输入数据必须要求算法探索每个单点交互,并且在此之后算法会对输入点进行混洗。最佳情况下的性能是O(M),这是通过选择小于CMAX的内环距离来满足的,并且会导致尽可能多的提前中断。作者已经正式证明了平均运行时间更接近O(M)。0.19.0 新版功能.
参考文献
- 1
A.A.Taha和A.Hanbury合著的“一种计算精确Hausdorff距离的有效算法”。IEEE模式分析和机器智能学报,第一卷。37页,2153-63页,2015年。
示例
找出两个二维坐标数组之间的有向Hausdorff距离:
>>> 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)])
>>> directed_hausdorff(u, v)[0] 2.23606797749979 >>> directed_hausdorff(v, u)[0] 3.0
求出两个二维坐标阵列之间的常规(对称)Hausdorff距离:
>>> max(directed_hausdorff(u, v)[0], directed_hausdorff(v, u)[0]) 3.0
查找生成Hausdorff距离(Hausdorff对)的点的索引:
>>> directed_hausdorff(v, u)[1:] (3, 3)