我有两个具有任意尺寸的列表(l1
,l2
),例如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]]])
(l1[:,:,None,None]*l2.T).swapaxes(1,3)
这应该给您想要的输出