Как рассчитать манхэттенское расстояние в Python (с примерами)


Манхэттенское расстояние между двумя векторами, A и B , рассчитывается как:

Σ|А я – В я |

где i — i -й элемент в каждом векторе.

Это расстояние используется для измерения различия между двумя векторами и обычно используется во многих алгоритмах машинного обучения .

В этом руководстве показаны два способа вычисления манхэттенского расстояния между двумя векторами в Python.

Способ 1: напишите пользовательскую функцию

В следующем коде показано, как создать пользовательскую функцию для вычисления манхэттенского расстояния между двумя векторами в Python:

from math import sqrt

#create function to calculate Manhattan distance 
def manhattan(a, b):
 return sum ( abs (val1-val2) for val1, val2 in zip (a,b))

#define vectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]

#calculate Manhattan distance between vectors
manhattan(A, B)

9

Манхэттенское расстояние между этими двумя векторами оказывается равным 9 .

Мы можем подтвердить это правильно, быстро рассчитав манхэттенское расстояние вручную:

Σ|А я – В я | = |2-5| + |4-5| + |4-7| + |6-8| знак равно 3 + 1 + 3 + 2 = 9 .

Способ 2: используйте функцию cityblock()

Другой способ рассчитать манхэттенское расстояние между двумя векторами — использовать функцию cityblock() из пакета SciPy:

from scipy. spatial.distance import cityblock

#define vectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]

#calculate Manhattan distance between vectors
cityblock(A, B)

9

Снова манхэттенское расстояние между этими двумя векторами оказывается равным 9 .

Обратите внимание, что мы также можем использовать эту функцию, чтобы найти манхэттенское расстояние между двумя столбцами в кадре данных pandas:

from scipy. spatial.distance import cityblock
import pandas as pd

#define DataFrame
df = pd.DataFrame({'A': [2, 4, 4, 6],
 'B': [5, 5, 7, 8],
 'C': [9, 12, 12, 13]})

#calculate Manhattan distance between columns A and B 
cityblock(df.A , df.B )

9

Дополнительные ресурсы

Как рассчитать евклидово расстояние в Python
Как рассчитать расстояние Хэмминга в Python
Как рассчитать расстояние Левенштейна в Python
Как рассчитать расстояние Махаланобиса в Python