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

时间:2015-08-20 11:43:52

标签: python arrays numpy multidimensional-array

我有两个名为numpyA的2D B数组,AM x NB为{ {1}}。我的问题是,我希望将M x n的每一行的B的相应相乘,并创建一个3D矩阵{{1其大小为A,不使用C - 循环。

例如,如果M x n x N是:

for

A

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

然后得到的乘法B看起来像

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

我想要实现的目标是否明确,是否可以在没有任何C = A x B循环的情况下进行?最好的,tingis

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

A[np.newaxis,...].T * B[np.newaxis,...]
给予:

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

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

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