python 数组中多个向量的Tensor积

bybem2ql  于 2023-04-19  发布在  Python
关注(0)|答案(2)|浏览(106)

我需要计算存储在两个数组中的几对向量的Tensor积。我给予你一个例子:

a=np.array([[3,5,1],[6,5,4]])
b=np.array([[8,2,3],[7,8,9]])

我想计算的是

np.array([tensorproduct(a[0],b[0]),tensorproduct(a[1],b[1])])

我找不到一个很好的方法来用numpy函数来做这件事,我不想通过将数组拆分成它们各自的向量来做到这一点,因为这需要很长的时间(我需要这个递归模拟,所以我可以保存的每一点时间都是黄金)。我希望有一个快速的方法来做到这一点,有人能帮助我吗?

bq3bfh9z

bq3bfh9z1#

如果你说的tensorproduct只是指matmul/dot product,我想你需要这样的东西:

z = a * b
z = np.sum(z, axis=1)

编辑:
根据你的评论,我认为你想要(可以做)的是使用广播来增加维度,这样你就可以做一个简单的乘法。

z = x[:, :, None, None] * y[None, None, :, :]
3wabscal

3wabscal2#

如果你想要(a[0]*b[0]).sum()(a[1]*b[1]).sum()
您可以将numpy.einsum用于:

np.einsum('ij,ij->i', a, b)

输出:array([ 37, 118])

相关问题