Использовать вещание . Сейчас ваши размеры (x, y, z)
, (x, y, k)
. Те, что слева, совпадают, но вам нужно вставить размеры блоков справа, чтобы они выровнялись в соответствии с желаемой формой вывода. Самый простой способ - использовать np.newaxis
, который является псевдонимом для None
:
M1[..., None] * M2[..., None, :]
...
означает «захватить» все измерения, не указанные явно. Он может появляться не более одного раза в индексе. Первый индекс означает захват x, y, z
и добавление новой оси, поэтому результирующий вид имеет форму (x, y, z, 1)
. Второй индекс означает захват x, y
, вставка новой оси, затем захват k
, поэтому результирующий вид имеет форму (x, y, 1, k)
. Поэтому поэлементное умножение приводит к массиву (x, y, z, k)
.