NumPy: вычисления и устройство массивов

Матрично-векторные произведения через оператор @

Содержание курса

Найди и исправь: три неверных выражения матричного умножения

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.

В редакторе есть сломанный код. Он пытается выполнить три операции с оператором @, но в каждой из трёх строк допущена ошибка: неверный операнд или порядок операндов приводит к тому, что shape результата не тот, что требует задача (а в некоторых случаях — к ValueError из-за несовпадения внутренних размеров).

Читаются три целых числа M, N, K (все не менее 2). Затем создаются три массива:

  • A — shape (M, K), заполненная единицами;
  • b — shape (K,), заполненный единицами;
  • B — shape (K, N), заполненная единицами.

Что нужно сделать

Найдите и исправьте ровно три ошибки в строках, помеченных # ОШИБКА, так чтобы:

  • r1 = A @ b — shape (M,): матрица (M, K) умножается на вектор (K,);
  • r2 = b @ B — shape (N,): вектор (K,) умножается на матрицу (K, N);
  • r3 = A @ B — shape (M, N): матрица (M, K) умножается на матрицу (K, N).

Программа выводит shape каждого результата в три строки в формате r1: <shape>, r2: <shape>, r3: <shape>.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

M N K

Гарантируется M >= 2, N >= 2, K >= 2, а также M, N, K могут быть различными.

Формат вывода

r1: (M,)
r2: (N,)
r3: (M, N)
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    3 5 4
    Ожидаемый вывод
    r1: (3,)
    r2: (5,)
    r3: (3, 5)
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.