python - 如何在python中使用广播计算矩阵的成对余弦距离
问题描述
我有一个像这样的矩阵,其中每一行都是一个向量,并且需要在不使用循环的情况下计算向量之间的成对余弦距离(在本例中,作为 2x2 矩阵)?我了解笛卡尔距离可以增加一个维度,但不知道这里的最佳方法。
m = np.array([[1, 3, 5],[2,6,10]])
解决方案
这种类型的问题会让你斥责“堆栈不适合做作业”,但我想你可以这样做......
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)
推荐阅读
- sql - SQL Join 查询带来多个结果
- .htaccess - .htaccess - 如果找到,则在 .phar 文件上提供请求,否则在 index.php 上提供
- android - 忽略导航()调用
- node.js - NodeJS 中的客户端 websocket 证书
- python - 使线程在不同的核心python上同时运行
- zapier - 从 Zapier 存储中删除超过 1 个月的密钥
- php - PDO 存储 FetchAll 导致变量与直接在 foreach 中使用
- excel - 在 Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 之后,Excel 2010 VBA 宏在执行过程中退出且没有错误
- vue.js - 具有数据绑定的 Vue 路由器参数
- c++ - Boost Program_Options 如何处理数组向量?