Задача курса

Broadcasting NumPy: нормализация строк и столбцов

Курс «NumPy и pandas: практический тренажёр» · урок «Broadcasting: правила совместимости форм и исправление несовместимости»

Задача проверяет, когда вектор формы (R,) нужно превратить в (R, 1), а когда дополнительная ось не нужна.

Условие

Broadcasting: нормализация строк и столбцов матрицы

Что уже дано

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

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

Напишите программу, которая:

  1. Читает из stdin два целых числа R и C — число строк и столбцов матрицы.
  2. Читает следующие R строк; каждая содержит ровно C целых чисел через пробел. Создаёт двумерный массив M через np.array(..., dtype=float) формы (R, C).
  3. Нормализация по строкам. Вычисляет сумму каждой строки через np.sum(M, axis=1) — результат shape (R,). Делит M на эти суммы через broadcasting, добавив ось через [:, np.newaxis] или reshape(-1, 1), чтобы делитель стал формы (R, 1). Сохраняет результат в norm_rows — shape (R, C). Выводит shape norm_rows в одну строку.
  4. Нормализация по столбцам. Вычисляет максимум каждого столбца через np.max(M, axis=0) — результат shape (C,). Делит M на эти максимумы через broadcasting (форма (C,) совместима с (R, C) напрямую). Сохраняет результат в norm_cols — shape (R, C). Выводит shape norm_cols в одну строку.
  5. Выводит через пробел два значения: norm_rows[0, 0] и norm_cols[0, 0], округлённых до одного знака после запятой.

Ввод и вывод

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

Формат ввода

Первая строка: два целых числа R и C через пробел.

Следующие R строк: по C целых чисел через пробел.

Гарантируется: R >= 2, C >= 2, все элементы матрицы положительны.

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

Три строки:

  • shape norm_rows в виде кортежа Python, например (2, 4);
  • shape norm_cols в виде кортежа Python, например (2, 4);
  • два значения через пробел: norm_rows[0, 0] и norm_cols[0, 0], каждое с одним знаком после запятой.

Примеры

Пример 1

Ввод
2 4
1 2 3 4
2 4 6 8
Ожидаемый результат
(2, 4)
(2, 4)
0.1 0.5

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется