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


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

Евклидово расстояние = √ Σ(A i -B i ) 2

Чтобы вычислить евклидово расстояние между двумя векторами в Python, мы можем использовать функцию numpy.linalg.norm :

#import functions
import numpy as np
from numpy. linalg import norm

#define two vectors
a = np.array([2, 6, 7, 7, 5, 13, 14, 17, 11, 8])
b = np.array([3, 5, 5, 3, 7, 12, 13, 19, 22, 7])

#calculate Euclidean distance between the two vectors 
norm(a-b)

12.409673645990857

Евклидово расстояние между двумя векторами оказывается равным 12,40967 .

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

#import functions
import numpy as np
from numpy. linalg import norm

#define two vectors
a = np.array([2, 6, 7, 7, 5, 13, 14])
b = np.array([3, 5, 5, 3, 7, 12, 13, 19, 22, 7])

#calculate Euclidean distance between the two vectors 
norm(a-b)

ValueError : operands could not be broadcast together with shapes (7,) (10,)

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

#import functions
import pandas as pd 
import numpy as np
from numpy. linalg import norm

#define DataFrame with three columns
df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#calculate Euclidean distance between 'points' and 'assists' 
norm(df['points'] - df['assists'])

40.496913462633174

Евклидово расстояние между двумя столбцами оказывается равным 40,49691 .

Заметки

1. Существует несколько способов вычисления евклидова расстояния в Python, но, как объясняется в этой ветке Stack Overflow , описанный здесь метод оказывается самым быстрым.

2. Полную документацию по функции numpy.linalg.norm вы можете найти здесь .

3. Вы можете обратиться к этой странице Википедии, чтобы узнать больше о евклидовом расстоянии.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.