Как рассчитать попарно косинусное расстояние матрицы с использованием широковещания в python - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть такая матрица, где каждая строка является вектором, и мне нужно рассчитать попарно косинусное расстояние между векторами (в этом примере, как матрицу 2x2) без использования циклов? Я понимаю, что для декартовой дистанции можно увеличить размерность, но я не знаю лучшего метода здесь.

m = np.array([[1, 3, 5],[2,6,10]])

1 Ответ

1 голос
/ 17 февраля 2020

Этот тип вопроса заставит вас ругать с помощью "Stack not for homework", но я думаю, вы могли бы просто сделать это ...

from numpy import linalg as LA
import numpy as np
m = np.array([[1, 3, 5],[2,6,10]])
cos = float(sum(m[0]*m[1]))/float(LA.norm(m[0])*LA.norm(m[1]))

конечно, если вы хотите избежать использования linlag

float(sum(m[0]*m[1]))/(float(sum(m[0]*m[0]))**0.5*float(sum(m[1]*m[1]))**0.5)

См. Ссылку -> https://en.wikipedia.org/wiki/Cosine_similarity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...