jak obliczyć odległość euklidesową dwóch tablic numpy przez rozgłaszanie [duplikat]

Aug 16 2020

Chciałbym obliczyć odległość euklidesową dwóch tablic numpy.

Każdy wiersz w tablicy jest wektorem.

na przykład

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

Muszę obliczyć odległość euklidesową każdego rzędu w a z każdym wierszem w b.

Rzeczywisty rozmiar tablicy może wynosić 5000 wierszy i 4000 kolumn.

Wiem, jak to zrobić, używając dwóch pętli for i jednej pętli for. Muszę to rozwiązać za pomocą wektoryzowanej tablicy numpy. np. rozgłaszaj tablicę do innej, nphttps://numpy.org/devdocs/user/theory.broadcasting.html

bez używania

 spatial.distance.cdist

ale nie wiem, jak to zrobić.

Każda pomoc będzie mile widziana.

Odpowiedzi

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

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