繁体   English   中英

将两个2D numpy数组乘以3D数组

[英]Multiplying two 2D numpy arrays to a 3D array

我有两个名为AB 2D numpy数组,其中AM x NBM xn 我的问题是我希望将每行 B 每个元素A相应相乘,并创建一个大小为M xnx N的3D矩阵C ,而不使用for -loops。

例如,如果A是:

A = np.array([[1, 2, 3],
              [4, 5, 6]])

B

B = np.array([[1, 2],
              [3, 4]])

然后得到的乘法C = A x B看起来像

C = [
     [[1, 2],
      [12, 16]],
     [[2, 4],
      [15, 20]],
     [[3, 6],
      [18, 24]]
     ]

是否清楚我想要实现的目标,是否可以在没有任何for -loops的情况下for 最好的,tingis

C=np.einsum('ij,ik->jik',A,B)

可以通过在每个数组中创建一个新轴并转置修改后的A

A[np.newaxis,...].T * B[np.newaxis,...]

赠送:

array([[[ 1,  2],
        [12, 16]],

       [[ 2,  4],
        [15, 20]],

       [[ 3,  6],
        [18, 24]]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM