首页 > 解决方案 > 如何在python中使用广播计算矩阵的成对余弦距离

问题描述

我有一个像这样的矩阵,其中每一行都是一个向量,并且需要在不使用循环的情况下计算向量之间的成对余弦距离(在本例中,作为 2x2 矩阵)?我了解笛卡尔距离可以增加一个维度,但不知道这里的最佳方法。

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

标签: pythonnumpy

解决方案


这种类型的问题会让你斥责“堆栈不适合做作业”,但我想你可以这样做......

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


推荐阅读