Python Numpy:将矩阵与3d张量相乘——建议
我有一个矩阵Python Numpy:将矩阵与3d张量相乘——建议,python,matrix,numpy,scipy,linear-algebra,Python,Matrix,Numpy,Scipy,Linear Algebra,我有一个矩阵p和一个三维张量T和形状KxNxR。我想用T中的每个NxR矩阵乘以P,得到KxMxR3d张量 p.dot(T).转置(1,0,2)给出所需的结果。是否有更好的解决方案(即摆脱转置)来解决此问题?这一定是一个非常常见的操作,因此我假设其他人已经找到了不同的方法,例如使用tensordot(我尝试过,但没有得到预期的结果)。非常感谢您的意见 您也可以使用爱因斯坦求和符号: scipy.tensordot(P, T, axes=[1,1]).swapaxes(0,1) P = numpy
p
和一个三维张量T
和形状KxNxR
。我想用T
中的每个NxR
矩阵乘以P
,得到KxMxR
3d张量
p.dot(T).转置(1,0,2)
给出所需的结果。是否有更好的解决方案(即摆脱转置
)来解决此问题?这一定是一个非常常见的操作,因此我假设其他人已经找到了不同的方法,例如使用tensordot
(我尝试过,但没有得到预期的结果)。非常感谢您的意见 您也可以使用爱因斯坦求和符号:
scipy.tensordot(P, T, axes=[1,1]).swapaxes(0,1)
P = numpy.random.randint(1,10,(5,3))
P.shape
T = numpy.random.randint(1,10,(2,3,4))
T.shape
numpy.einsum('ij,kjl->kil',P,T)
这将为您提供与以下相同的结果:
P.dot(T).transpose(1,0,2)
哈昨天我盯着scipy.tensordot(P,T,axes=[1,1])的结果看了几个小时,对交换的维度感到绝望。我不知道Swapax的事,谢谢!不客气。我还检查了交换轴是否给出了正确的数字答案,确实如此。