![](/img/trans.png)
[英]Numpy martix multiplication using numpy.einsum with vectorization
[英]Matrix multiplication with numpy.einsum
我有以下两个形状的数组:
A = (d,w,l)
B = (d,q)
我想将它们组合成一个带有形状的3d数组:
C = (q,w,l)
更具体一点,在我的情况下,d(3d数组的深度)是2,并且我首先想要将A的上层中的所有位置乘以w * l(所以d = 0)最高行中B的第一个值(所以d = 0,q = 0)。 对于d = 1,我也这样做,然后将两者相加:
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来计算C. 我想到了以下代码:
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进行这种乘法?
谢谢
你的形状A = (d,w,l), B = (d,q), C = (q,w,l)
实际上写出了einsum
表达式
C=np.einsum('dwl,dq->qwl',A,B)
我可以测试一下
In [457]: np.allclose(A[0,:,:]*B[0,0]+A[1,:,:]*B[1,0],C[0,:,:])
Out[457]: True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.