【问题标题】:batch pairwise dot product using numpy使用 numpy 批量成对点积
【发布时间】:2020-09-10 20:49:56
【问题描述】:

我有两批向量: W= [w1,w2, w3,...]

V= [v1,v2,v3,...]。

两个批次都用 numpy 2D 向量 [[x1, y1], [x2,y2]...] 表示

我想计算 W 中的任何元素与 V 中的元素之间的成对点积,并且我想要一个可能组合的矩阵,即

[ w1.v1 , w1.v2 , w1.v3,...

w2.v1 , w2.v2 , w2.v3,...

w3.v1 , w3.v2 , w3.v3,...

....................... ]

如果 w 和 v 是简单的标量,那么这很容易。

但问题是 w 和 v 是一维向量:[x, y]

如何在 numpy 中实现这一点?

谢谢

【问题讨论】:

  • 这能回答你的问题吗? Numpy dot product
  • 这在我看来就像普通的矩阵乘法。

标签: python numpy vectorization dot-product


【解决方案1】:

假设你要计算行向量的点积,

np.einsum('ji,ki-> jk', V, W)

如果列向量

np.einsum('ij,ik-> jk', V, W)

【讨论】:

  • 你好,我是 Einstein Summation 的菜鸟。列向量和行向量是什么意思?
  • @AbelTan 你有一个数组 [[a, b, c], [d, e, f]] 和另一个 [[x, y, z], [w, s, t]]您的结果是 3x3 数组(因此您采用原始数组的列的点积(或 2x2(因此您采用行的点积)?在后一种情况下,第一个配方有效,在前者中,第二个有效。
  • 它是一个 3x3 数组,所以我采用第二个配方?
猜你喜欢
  • 2019-10-31
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多