Используйте np.einsum
для суммирования последних осей друг против друга -
SIGMA = np.einsum('ijk,ijl->ikl',diff,diff)
SIGMA = SIGMA/rows
Используйте флаг optimize
со значением True
в np.einsum
, чтобы использовать BLAS
.
Мы также можем использовать np.matmul
, чтобы получить эти sum-reductions
-
SIGMA = np.matmul(diff.swapaxes(1,2),diff)