Недавно я перешел на Python 3.5 и заметил, что новый оператор умножения матриц (@) иногда ведет себя иначе, чем numpy dot. В примере, для 3D-массивов:
import numpy as np
a = np.random.rand(8,13,13)
b = np.random.rand(8,13,13)
c = a @ b # Python 3.5+
d = np.dot(a, b)
Оператор @
возвращает массив формы:
c.shape
(8, 13, 13)
в то время как функция np.dot()
возвращает:
d.shape
(8, 13, 8, 13)
Как я могу воспроизвести один и тот же результат с помощью точки numpy? Существуют ли другие существенные различия?