Come calcolare la distanza euclidea in python (con esempi)


La distanza euclidea tra due vettori A e B si calcola come segue:

Distanza euclidea = √ Σ(A i -B i ) 2

Per calcolare la distanza euclidea tra due vettori in Python, possiamo usare la funzione 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(ab)

12.409673645990857

La distanza euclidea tra i due vettori risulta essere 12.40967 .

Nota che questa funzione produrrà un messaggio di avviso se i due vettori non hanno la stessa lunghezza:

 #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(ab)

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

Nota che possiamo anche usare questa funzione per calcolare la distanza euclidea tra due colonne di un DataFrame panda:

 #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

La distanza euclidea tra le due colonne risulta essere 40.49691 .

Commenti

1. Esistono diversi modi per calcolare la distanza euclidea in Python, ma come spiega questo thread di Stack Overflow , il metodo spiegato qui risulta essere il più veloce.

2. Puoi trovare la documentazione completa della funzione numpy.linalg.norm qui .

3. Puoi fare riferimento a questa pagina Wikipedia per saperne di più sulla distanza euclidea.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *