как вычислить евклидово расстояние двух массивов numpy путем широковещательной передачи [дубликат]
Aug 16 2020
Я хотел бы рассчитать евклидово расстояние двух массивов numpy.
Каждая строка в массиве - это вектор.
например
a = np.array([125, 20, 210, 55], [11, 97, 111, 71])
b = np.array([51, 19, 35, 65], [59, 80, 37, 60])
Мне нужно рассчитать евклидово расстояние каждой строки в a с каждой строкой в b.
Фактический размер массива может составлять 5000 строк и 4000 столбцов.
Я знаю, как это сделать с помощью двух циклов for и одного цикла for. Мне нужно решить это векторизованным массивом numpy. например, транслируйте массив другому, напримерhttps://numpy.org/devdocs/user/theory.broadcasting.html
без использования
spatial.distance.cdist
но я не могу понять, как это сделать.
Любая помощь будет оценена по достоинству.
Ответы
AagamSheth Aug 16 2020 at 13:03
import numpy as np
np.sqrt((np.square(a[:,np.newaxis] - b).sum(axis=2)))