В MATLAB последнее измерение является внешним. Очевидно, что (3,1) расширяется в этом направлении, чтобы соответствовать (3,1,4) другого.
В numpy
ведущее измерение является внешним. (3,1) передает в (1,3,1), и вместе с (3,1,4), 1 расширяется до совместного (3,3,4).
Чтобы расширить вВ другом направлении вам нужно быть явным, b[:,:,np.newaxis])
. Теперь у вас есть (3,1,1), который вещает с (3,1,4).
Как историческая справка, MATLAB изначально был строго 2d, в Фортране, основной форме столбца. Около версии 3.5 они допускали более высокие измерения, хотя я верю в некое придуманное поведение (отображение последних измерений на второе). Он легко добавляет или сокращает эти последние измерения. Трансляция смысла numpy
- еще более новое дополнение, но со специальными правилами MATLAB.