【问题标题】:Is there a function for calculating all the pairwise dot products of the columns of a matrix, or between all pairs in a list of vectors?是否有计算矩阵列的所有成对点积或向量列表中所有对之间的函数?
【发布时间】:2019-09-14 00:38:36
【问题描述】:

假设你有 n。任意(但相等)长度为 m 的向量。是否有(numpy?)函数或快速方法来计算这些 n 之间的所有成对点积。载体?

我最初的想法是你可以计算 ATA 并取上三角部分,但我不确定矩阵乘法是否缓慢/计算密集。有没有更快/更有效的方法?还是应该只为所有对组合使用 for 循环定义一个函数?

【问题讨论】:

  • 你的意思是标量积吗?
  • 我想将二维数组 arr 的所有列乘以所有其他列,请使用 tensordot : np.tensordot(arr, arr, axes=(0,0))。结果形状为(n,n)
  • @Chgad 是的,点积或标量积或内积。
  • @Brenlla Tensordot 看起来正是我需要的,谢谢!
  • 顺便说一句,A.T.dot(A) 也应该可以正常工作,不需要取三角形部分

标签: python numpy


【解决方案1】:

根据@Brenila 的评论,使用tensordot

np.tensordot(arr, arr, axes=(0,0))

结果形状是 (n, n) 对应于 n = arr.shape[-1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-27
    • 2021-05-23
    • 2019-10-11
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多