Существует ли векторизованный способ выполнения операций, подобных умножению матриц, в NumPy? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть матрица A формы mxn и другая меньшая матрица B формы kxn . Я хочу вычислить евклидово расстояние между строками A и B, генерируя матрицу C формы mxk . У меня уже есть функция dist(row1, row2). Это тривиально с использованием циклов, но есть ли векторизованный способ сделать это в NumPy?

Я считаю, что то, что я хочу, может быть преобразовано в пользовательскую операцию, подобную умножению матриц (если я транспонирую B), и этот вопрос , кажется, движется в том же направлении, но лучший ответ там - перестановка операций для достижения векторизации (я хочу использовать свою отдельную функцию dist(row1, row2)). Во втором ответе используется отдельная функция, но также используются циклы.

1 Ответ

0 голосов
/ 20 марта 2020

Попробуйте ниже, что может помочь? Если A - это форма mxn, а B - это форма kxn, C должно иметь форму mxk

C = np.linalg.norm([A[:,None,:]-B],axis=-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...