python - 计算一维数组和二维数组中所有行之间余弦相似度的有效方法
问题描述
我有一个 1D 数组 shape(300, )
和一个 2D 数组 shape (400, 300)
。现在,我想计算这个二维数组中每一行与一维数组的余弦相似度。因此,我的结果应该是(400, )
表示这些向量有多相似的形状。
我最初的想法是使用循环遍历二维数组中的行for
,然后计算向量之间的余弦相似度。使用广播方法是否有更快的替代方案?
这是一个人为的例子:
In [29]: vec = np.random.randn(300,)
In [30]: arr = np.random.randn(400, 300)
下面是我想计算一维数组之间的相似性的方式:
inn = (vec * arr[0]).sum()
vecnorm = numpy.sqrt((vec * vec).sum())
rownorm = numpy.sqrt((arr[0] * arr[0]).sum())
similarity_score = inn / vecnorm / rownorm
我如何将其概括为arr[0]
被二维数组替换?
解决方案
推荐阅读
- java - Flux.groupBy() 后跟 Flux#next 不会对元素进行分组
- ansible - ansible循环列表
- spring - spring Vault 位置 [secret/my-application] 无法解析:未找到
- kubernetes - Pod 在 GKE 上的单个节点上卡在 Init 和 Terminating 状态
- python - 为什么忽略一个键并将相同的值分配给字典的每个项目?
- python - 如何在熊猫中将每日数据转换为每周数据
- material-ui - 材质 UI 显示属性不隐藏内容
- spring-boot - 在 Spring Boot 应用程序中使用 AutoConfigureWireMock 时如何选择场景
- javascript - 反应本机收到此错误:“[未处理的承诺拒绝:SyntaxError:JSON Parse 错误:意外的标识符“Employee”]”
- python - Spinner、ToggleButton 存储值并在按下按钮时打印