为了账号安全,请及时绑定邮箱和手机立即绑定

多个向量之间的距离

多个向量之间的距离

精慕HU 2022-11-24 15:02:23
我有两组三维单位向量,我想衡量它们的相似程度。我目前的方法是手动计算它们的差异的欧氏范数。一个例子(不考虑单位向量)看起来像import numpy as npN = 4000a = np.random.rand(3,N)b = np.random.rand(3,N)dist = np.sum((a-b)**2,axis=0)dist = np.sum(dist)/len(dist)有没有更好的方法来做到这一点?即我没有想到的 numpy 函数或度量?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

要计算 numpy 中的欧几里德距离,您可以使用

numpy.linalg.norm(a-b)

还有其他类型的距离,测量其他类型的相似性。SciPy 有很多在文档中实现和描述:https ://docs.scipy.org/doc/scipy/reference/spatial.distance.html


查看完整回答
反对 回复 2022-11-24
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

正如问题评论中所讨论的,这应该更适合您要执行的操作:


from scipy import spatial

import numpy as np


N = 10

a = np.random.rand(3, N)

b = np.random.rand(3, N)


mean_a = np.mean(a, axis=1)

mean_b = np.mean(b, axis=1)


similarity = spatial.distance.cosine(mean_a, mean_b)

越接近 1 的值越相似,越接近 0 的值越不相似。


查看完整回答
反对 回复 2022-11-24
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您可以在 scipy 包中使用距离。


from scipy.spatial import distance


distance.euclidean(a, b)


查看完整回答
反对 回复 2022-11-24
  • 3 回答
  • 0 关注
  • 255 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号