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

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

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

Broadcasting: outer-таблица и центрирование матрицы по строкам

Что уже дано

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

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

Напишите программу, которая выполняет два broadcasting-вычисления над одними и теми же данными.

  1. Читает из stdin два целых числа R и C — число строк и столбцов.
  2. Читает следующие R строк; каждая содержит ровно C целых чисел через пробел. Создаёт двумерный массив M через np.array(..., dtype=float) формы (R, C).
  3. Outer-таблица разностей. Создаёт вектор row_means — среднее каждой строки через np.mean(M, axis=1), shape (R,). Создаёт вектор col_means — среднее каждого столбца через np.mean(M, axis=0), shape (C,). Вычисляет outer-таблицу diff = row_means[:, np.newaxis] - col_means через broadcasting — shape должен быть (R, C). Выводит shape diff в одну строку, затем значение элемента diff[0, 0] в следующую строку (целое число, если дробная часть нулевая, иначе float с одним знаком после запятой — используйте g-формат: f"{val:.1g}" не нужен, просто int(val) если val == int(val) иначе round(val, 1)).
  4. Центрирование строк. Вычитает из M среднее каждой строки через broadcasting: centered = M - row_means[:, np.newaxis] — shape (R, C). Выводит shape centered в одну строку, затем значение элемента centered[0, 0] в следующую строку (то же правило вывода числа).

Ввод и вывод

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

Формат ввода

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

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

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

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

Четыре строки:

  • shape diff в виде кортежа Python, например (3, 4);
  • значение diff[0, 0];
  • shape centered в виде кортежа Python, например (3, 4);
  • значение centered[0, 0].
О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    3 4
    1 2 3 4
    5 6 7 8
    9 10 11 12
    
    Ожидаемый вывод
    (3, 4)
    -2.5
    (3, 4)
    -1.5
    
Решение
Как проверяется решение

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

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