开发者社区> 问答> 正文

欧氏距离和曼哈顿距离

欧氏距离和曼哈顿距离

展开
收起
珍宝珠 2019-11-26 17:40:03 2672 0
1 条回答
写回答
取消 提交回答
  • 欧氏距离(也称为欧几里得度量),是应用勾股定理计算两个点之间的直线距离,也就是指m维空间两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。

    下面是欧式距离的公式(分别是二维空间,三维空间,n维空间):
    image.png

     曼哈顿距离表示的是两个点在标准坐标系上绝对轴距之和,是种使用在几何度量空间的几何学用语。
    image.png

    例如在平面上,坐标(x1, y1)的i点与坐标(x2, y2)的j点的曼哈顿距离为:
    d(i,j)=|X1-X2|+|Y1-Y2|

    如图所示,很直接明了的理解欧氏距离和曼哈顿距离: image.png
    图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离。

    欧氏距离和曼哈顿距离的Python实现:

    import numpy as np
     
    def manhattan_distance(vec1, vec2):
        """
        This method implements the manhattan distance metric
        :param p_vec: vector one
        :param q_vec: vector two
        :return: the manhattan distance between vector one and two
        """
        return np.sum(np.fabs(vec1 - vec2))
     
    def edclidean_distance(vec1, vec2):
        """
        This method implements the edclidean distance metric
        :param vec1: vector one
        :param vec2: vector two
        :return: the edclidean distance between vector one and two
        """
        # 方法一
        distance = np.sqrt(np.sum(np.square(vec1 - vec2)))
     
        # method 2
        dist = np.linalg.norm(vec1 - vec2)
        return distance
    
    2019-11-26 17:42:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载