Broadcasting: правила совместимости форм и исправление несовместимости
Содержание курса
Найди и исправь: несовместимые формы при broadcasting
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе уже есть сломанный код. Он пытается выполнить три операции с broadcasting, но в каждой из трёх допущена ошибка: либо формы несовместимы и нужно добавить ось, либо ось добавлена не туда, либо вместо np.newaxis использован reshape с неверными аргументами.
Что нужно сделать
Найдите и исправьте все три ошибки так, чтобы программа:
- Читала из
stdinодну строку с четырьмя целыми числами:R,C,a_val,b_val. - Создавала матрицу
M = np.ones((R, C)) * a_val— shape(R, C). - Создавала вектор
row = np.arange(C) + b_val— shape(C,). - Создавала вектор
col = np.arange(R) + b_val— shape(R,). - Вычисляла три результата и выводила их 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Ввод
3 4 5 1
Ожидаемый вывод(3, 4) (3, 4) (3, 4)
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
