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

Broadcasting: правила совместимости форм и исправление несовместимости

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

Найди и исправь: несовместимые формы при broadcasting

Что уже дано

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

В редакторе уже есть сломанный код. Он пытается выполнить три операции с broadcasting, но в каждой из трёх допущена ошибка: либо формы несовместимы и нужно добавить ось, либо ось добавлена не туда, либо вместо np.newaxis использован reshape с неверными аргументами.

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

Найдите и исправьте все три ошибки так, чтобы программа:

  1. Читала из stdin одну строку с четырьмя целыми числами: R, C, a_val, b_val.
  2. Создавала матрицу M = np.ones((R, C)) * a_val — shape (R, C).
  3. Создавала вектор row = np.arange(C) + b_val — shape (C,).
  4. Создавала вектор col = np.arange(R) + b_val — shape (R,).
  5. Вычисляла три результата и выводила их shape в три строки:
  • s1: M + row — прибавить row к каждой строке M; ожидаемый shape (R, C). Ошибка: row ошибочно преобразован в row.reshape(R, 1) вместо row.reshape(1, C) или оставлен как (C,).
  • s2: M + col[:, np.newaxis] — прибавить col к каждому столбцу M; ожидаемый shape (R, C). Ошибка: написано col[np.newaxis, :] вместо col[:, np.newaxis].
  • s3: outer-произведение col и row без матрицы M; ожидаемый shape (R, C). Ошибка: написано col * row вместо col[:, np.newaxis] * row.

Исправьте ровно эти три места. Не меняйте ничего другого.

Ввод и вывод

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

Формат ввода

Одна строка с четырьмя целыми числами через пробел: R C a_val b_val.

Гарантируется: R >= 2, C >= 2, R ≠ C.

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

Три строки — shape каждого результата в виде кортежа Python, например (3, 4).

О данных в ответах

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

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

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

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