Умножение таблицы (300, 300) на (300, 100) требует девяти миллионов умножений. В цикле каждое обходится в десятки машинных действий: проверить типы, создать объект, положить в переменную. Само умножение занимает ничтожную долю этого времени.
Векторизация — запись вычисления целиком над тензорами, без перебора элементов. Работу выполняет библиотека на языке C, которая считает блоками и укладывает данные в кэш процессора. Убрав цикл, результат обязательно сверяют с прежним.
Подробно это разобрано в учебнике: Векторизация вычислений
Посчитай произведение таблицы (300, 300) на таблицу (300, 100) тремя способами: тремя вложенными циклами, одним циклом по заказам и одной операцией матричного умножения.
Убедись, что все три дают одинаковый результат, и замерь время каждого способа. Выведи времена и результат сверки.