多个外部产品的Numpy运算符

2024-04-26 01:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

import numpy as np
mat1 = np.random.rand(2,3)
mat2 = np.random.rand(2,5)

我希望得到一个2x3x5张量,其中每一层是3x5外积,通过将3x1转置行mat1乘以1x5行mat2得到。你知道吗

能用numpy matmul做吗?你知道吗


Tags: importnumpyasnprandomrandmatmulmat2
1条回答
网友
1楼 · 发布于 2024-04-26 01:35:41

在用^{}扩展它们的维度之后,您可以简单地使用^{}-

mat1[...,None]*mat2[:,None]

这将是最有效的,因为这里不需要sum-reduction来保证来自np.einsumnp.matmul的服务。你知道吗

如果您仍然想拖入^{},它基本上与broadcasting相同:

np.matmul(mat1[...,None],mat2[:,None])

使用^{},如果您熟悉它的字符串表示法,它可能会比其他的看起来更整洁一些-

np.einsum('ij,ik->ijk',mat1,mat2)
#          23,25->235  (to explain einsum's string notation using axes lens)

相关问题 更多 >