3
我有以下两个数组与形状:矩阵乘法与numpy.einsum
A = (d,w,l)
B = (d,q)
而且我想用这些形状组合成一个3D阵列:
C = (q,w,l)
要多一点具体来说,在我的情况下,d(3D阵列的深度)是2,并且我首先想要在A的上层(因此d = 0)中将w * 1中的所有位置乘以B的第一个值最高行(所以d = 0,q = 0)。对于d = 1 I做的一样,再总结两个这样:
C_{q=0,w,l} = A_{d=0,w,l}*B_{d=0,q=0} + A_{d=1,w,l}*B_{d=1,q=0}
我想通过利用numpy.einsum来计算℃。我想到了以下代码:
A = np.arange(100).reshape(2,10,5)
B = np.arange(18).reshape(2,9)
C = np.einsum('ijk,i -> mjk',A,B)
其中ijk指2,10,5,mjk指9,10,5。但是我得到一个错误。有没有办法用numpy einsum来执行这种乘法?
感谢
快速的问题:你是从你的标串缺少'M' 。它应该是'np.einsum('ijk,im - > mjk',A,B)'?这会创建一个新的数组 - 这是你在找什么? –
感谢您的回答,但如果我这样做,我会得到以下错误: 操作数无法与重新映射的形状一起广播[原始 - >重新映射]:(2,10,5) - >(10,5,2) (9,2) - >(2,newaxis,newaxis,9) –
当我运行你的'我想到下面的代码',但改变''ijk,我 - > mjk''为''ijk,im - > mjk''(如@ajcr建议)我没有收到错误。 – farenorth