Python 使用numpy批处理成对点积

Python 使用numpy批处理成对点积,python,numpy,vectorization,dot-product,Python,Numpy,Vectorization,Dot Product,我有两批向量: 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中实现这一点 谢谢假设您要计算行向量的点积 np.ein

我有两批向量: 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中实现这一点


谢谢

假设您要计算行向量的点积

np.einsum('ji,ki-> jk', V, W)
If列向量

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

假设要计算行向量的点积

np.einsum('ji,ki-> jk', V, W)
If列向量

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

这回答了你的问题吗?这看起来像是简单的矩阵乘法,这能回答你的问题吗?这看起来像是简单的矩阵乘法。你好,我是爱因斯坦求和的noob。你所说的列向量和行向量是什么意思?@AbelTan你有一个数组[[a,b,c],[d,e,f]],另一个[[x,y,z],[w,s,t]]是一个3x3数组(所以你取原始数组的列的点积(或者2x2)(所以你取行的点积)在后一种情况下,第一种方法有效,在前一种情况下,第二种方法有效。这是一个3x3数组,所以我采用第二种方法。你好,我是爱因斯坦求和的noob。列和行向量是什么意思?@AbelTan你有一个数组[[a,b,c],[d,e,f]],另一个[[x,y,z],[w,s,t]]是一个3x3数组吗(所以你取原始数组列的点积(或者2x2(所以你取行的点积)?在后一种情况下,第一个配方有效,在前一种情况下,第二个。它是3x3数组,所以我取第二个配方?