#17 数据上的各种距离(2)

曼哈顿距离(Manhattan Distance)

假设你要从家里走到学校,行径的距离肯定不会是两点间直线的距离,肯定是要经过各种路口转弯直走才会到达学校,而经由这种方式实际行径的距离就是曼哈顿距离

  • 二维平面两点 https://chart.googleapis.com/chart?cht=tx&chl=A(x_1%2C%20y_1)https://chart.googleapis.com/chart?cht=tx&chl=B(x_2%2C%20y_2) 间的曼哈顿距离
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%20%3D%20%7Cx_1-x_2%7C%2B%7Cy_1-y_2%7C

  • 两个n维向量 https://chart.googleapis.com/chart?cht=tx&chl=A(x_%7B11%7D%2C%20x_%7B12%7D%2C%20...x_%7B1n%7D)https://chart.googleapis.com/chart?cht=tx&chl=B(x_%7B21%7D%2C%20x_%7B22%7D%2C%20...x_%7B2n%7D) 间的曼哈顿距离
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%3D%5Cdisplaystyle%5Csum_%7Bk%3D1%7D%5En%7Cx_%7B1k%7D-x_%7B2k%7D%7C

用Python实现曼哈顿距离

import numpy as np


def get_dist(a, b):
    return sum(np.abs(a - b))


if __name__ == '__main__':
    a = np.array([1, 2])
    b = np.array([7, 2])
    print(get_dist(a, b)) # 6
    a = np.array([3, 4])
    b = np.array([8, 1])
    print(get_dist(a, b)) # 8

谢比雪夫距离(Chebyshev Distance)

切比雪夫距离(是L♾范数)是向量空间中的一种度量,二个点之间的距离定义为其各座标数值差的最大值,以下列棋盘为例,从f6要走到相邻的8格不管是斜走往左走望右走都需要一步刚好也等於f6与相邻8格的谢比雪夫距离,所以谢比雪夫距离也称为棋盘距离

取自维基百科

  • 二维平面上的两点 https://chart.googleapis.com/chart?cht=tx&chl=A(x_1%2C%20y_1)https://chart.googleapis.com/chart?cht=tx&chl=B(x_2%2C%20y_2) 间的谢比雪夫距离:
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%3D%5Cmax(%7Cx_1-x_2%7C%2C%7Cy_1-y_2%7C)

  • 两个 n 维向量 https://chart.googleapis.com/chart?cht=tx&chl=A(x_%7B11%7D%2C%20x_%7B12%7D%2C%20...x_%7B1n%7D)https://chart.googleapis.com/chart?cht=tx&chl=B(x_%7B21%7D%2C%20x_%7B22%7D%2C%20...x_%7B2n%7D) 间的谢比雪夫距离
    https://chart.googleapis.com/chart?cht=tx&chl=d_%7B12%7D%3D%5Cmax%5Climits_i(%7Cx_%7B1i%7D-x_%7B2i%7D%7C)

用Python实现谢比雪夫距离

import numpy as np


def get_dist(a, b):
    """
    a:  A点
    b:  B点
    """
    return np.max(np.abs(a - b))


if __name__ == '__main__':
    a = np.array([1, 2])
    b = np.array([7, 2])
    print(get_dist(a, b)) # 6
    a = np.array([3, 4])
    b = np.array([8, 1])
    print(get_dist(a, b)) # 5

<<:  【Day17】电子商务与行销篇-部落格

>>:  Day 17 LeetCode 322. Coin Change

DAY2-JAVA的变数与资料型态

第一天有讲到变数的部分,今天就让我们来深入了解一下吧! 首先,JAVA的资料型态可以分为原始资料型态...

[Day22]-用python处理影像档案

影像的编辑 更改影像大小 影像的翻转与旋转 影像像素的编辑 裁切、复制与影像合成 裁切与复制 影像...

Day 26 Quantum Protocols and Quantum Algorithms

Quantum Counting Quantum search + Quantum phase es...

从 RFC 规格书观点解析 OAuth 2.0

前言 OAuth2 目前一种 Web 主流的安全认证方法,是一种授权框架,资源所有者(Resourc...

[NestJS 带你飞!] DAY04 - Controller (下)

主体资料 (Body) 在传输资料时经常会使用到主体资料,比如说:POST、PUT、PATCH等操作...