comment calculer la distance euclidienne de deux tableaux numpy en diffusant [dupliquer]

Aug 16 2020

Je voudrais calculer la distance euclidienne de deux tableaux numpy.

Chaque ligne du tableau est un vecteur.

par exemple

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

Je dois calculer la distance euclidienne de chaque ligne de a avec chaque ligne de b.

La taille réelle du tableau peut atteindre 5 000 lignes et 4 000 colonnes.

Je sais comment le faire par deux boucles for et une boucle for. J'ai besoin de le résoudre par un tableau numpy vectorisé. par exemple diffuser un tableau à un autre commehttps://numpy.org/devdocs/user/theory.broadcasting.html

sans utiliser

 spatial.distance.cdist

mais, je ne peux pas comprendre comment le faire.

Toute aide serait appréciée.

Réponses

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

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