iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
自我挑戰組

終極大數據地獄系列 第 17

#17 數據上的各種距離(2)

  • 分享至 

  • xImage
  •  

曼哈頓距離(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

上一篇
#16 數據上的各種距離(1)
下一篇
# 18 數據上的各種距離(3)
系列文
終極大數據地獄24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言