У меня есть два списка (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, поэтому количество измерений в обоих списках не имеет значения.