come calcolare la distanza euclidea di due array numpy trasmettendo [duplicato]

Aug 16 2020

Vorrei calcolare la distanza euclidea di due array numpy.

Ogni riga nell'array è un vettore.

per esempio

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

Devo calcolare la distanza euclidea di ogni riga in a con ogni riga in b.

La dimensione effettiva dell'array può essere grande come 5000 righe e 4000 colonne.

So come farlo con due cicli for e un ciclo for. Ho bisogno di risolverlo con un array numpy vettorializzato. ad esempio trasmettere un array a un altro comehttps://numpy.org/devdocs/user/theory.broadcasting.html

senza usare

 spatial.distance.cdist

ma non riesco a capire come farlo.

Qualsiasi aiuto sarebbe apprezzato.

Risposte

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

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