Евклидово расстояние между двумя векторами, 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. Вы можете обратиться к этой странице Википедии, чтобы узнать больше о евклидовом расстоянии.