如何将list1的行乘以另一个list2,并根据list1中的行数来扩大维list2?

问题描述 投票:0回答:1

我有两个具有任意尺寸的列表(l1l2),例如l1.shape = (3,2)l2.shape = (2,2,2)

l1 = np.array([[1, 10], 
               [2, 20], 
               [3, 30]])

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

               [[5, 6],
                [7, 8]]],)

我想将l1的每一行乘以整个l2。因此,创建具有以下额外维度的新列表(l3),即l3.shape = (3,2,2,2)。所以我期望:

l3 = np.array([[[[1,   20], 
                 [3,   40]],
                [[5,   60],
                 [7,   80]]],

               [[[2,   40], 
                 [6,   80]],
                [[10, 120],
                 [14, 160]]],

               [[[3,   60], 
                 [9,  120]],
                [[15, 180],
                 [21, 240]]]])

我已经尝试过使用numpy分别广播行列表,从而使数组具有相同的大小。但是,我无法使用任意大小的列表来执行此操作,这对于我的应用程序很重要。

我尝试过:

l3 = l1[0,:] * l2

array([[[1, 20], 
        [3, 40]],
       [[5, 60],
        [7, 80]]])
numpy multidimensional-array matrix-multiplication
1个回答
0
投票
尝试以下操作,

(l1[:,:,None,None]*l2.T).swapaxes(1,3)

这应该给您想要的输出
© www.soinside.com 2019 - 2024. All rights reserved.