como calcular a distância euclidiana de dois arrays numpy transmitindo [duplicado]

Aug 16 2020

Gostaria de calcular a distância euclidiana de dois arrays numpy.

Cada linha na matriz é um vetor.

por exemplo

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

Preciso calcular a distância euclidiana de cada linha em a com cada linha em b.

O tamanho real da matriz pode ser de 5.000 linhas e 4.000 colunas.

Eu sei como fazer isso por dois loops for e um loop for. Eu preciso resolvê-lo por array numpy vetorizado. por exemplo, transmitir uma matriz para outra comohttps://numpy.org/devdocs/user/theory.broadcasting.html

sem utilizar

 spatial.distance.cdist

mas, não consigo descobrir como fazê-lo.

Qualquer ajuda seria apreciada.

Respostas

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

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