cómo calcular la distancia euclidiana de dos matrices numpy mediante la transmisión [duplicado]

Aug 16 2020

Me gustaría calcular la distancia euclidiana de dos matrices numpy.

Cada fila de la matriz es un vector.

p.ej

a = np.array([125, 20, 210, 55], [11, 97, 111, 71])
b = np.array([51, 19, 35, 65], [59, 80, 37, 60])

Necesito calcular la distancia euclidiana de cada fila en a con cada fila en b.

El tamaño real de la matriz puede ser tan grande como 5000 filas y 4000 columnas.

Sé cómo hacerlo mediante dos bucles for y un bucle for. Necesito resolverlo mediante una matriz numpy vectorizada. por ejemplo, transmitir una matriz a otra comohttps://numpy.org/devdocs/user/theory.broadcasting.html

sin uso

 spatial.distance.cdist

pero, no puedo averiguar cómo hacerlo.

Cualquier ayuda sería apreciada.

Respuestas

AagamSheth Aug 16 2020 at 13:03
import numpy as np

np.sqrt((np.square(a[:,np.newaxis] - b).sum(axis=2)))