Задача курса
NumPy broadcasting: outer-таблица и центрирование строк
Курс «NumPy и pandas: практический тренажёр» · урок «Broadcasting: правила совместимости форм и исправление несовместимости»
Условие
Broadcasting: outer-таблица и центрирование матрицы по строкам
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая выполняет два broadcasting-вычисления над одними и теми же данными.
- Читает из
stdinдва целых числаRиC— число строк и столбцов. - Читает следующие
Rстрок; каждая содержит ровноCцелых чисел через пробел. Создаёт двумерный массивMчерезnp.array(..., dtype=float)формы(R, C). - 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). Выводит shapediffв одну строку, затем значение элементаdiff[0, 0]в следующую строку (целое число, если дробная часть нулевая, иначе float с одним знаком после запятой — используйтеg-формат:f"{val:.1g}"не нужен, простоint(val)еслиval == int(val)иначеround(val, 1)). - Центрирование строк. Вычитает из
Mсреднее каждой строки через broadcasting:centered = M - row_means[:, np.newaxis]— shape(R, C). Выводит shapecenteredв одну строку, затем значение элемента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
- Ввод
3 4 1 2 3 4 5 6 7 8 9 10 11 12
- Ожидаемый результат
(3, 4) -2.5 (3, 4) -1.5
Попробуйте решить
РешениеPython
Без регистрации · результат не сохраняется
