wie man den euklidischen Abstand zweier numpy Arrays durch Broadcasting berechnet [duplizieren]

Aug 16 2020

Ich möchte den euklidischen Abstand zweier numpy Arrays berechnen.

Jede Zeile im Array ist ein Vektor.

z.B

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

Ich muss den euklidischen Abstand jeder Zeile in a mit jeder Zeile in b berechnen.

Die tatsächliche Größe des Arrays kann bis zu 5000 Zeilen und 4000 Spalten betragen.

Ich weiß, wie man das mit zwei For-Schleifen und einer For-Schleife macht. Ich muss es durch ein vektorisiertes numpy-Array lösen. B. ein Array an ein anderes senden, wiehttps://numpy.org/devdocs/user/theory.broadcasting.html

ohne zu benutzen

 spatial.distance.cdist

aber ich kann nicht herausfinden, wie es geht.

Jede Hilfe wäre willkommen.

Antworten

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

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