Задача курса

NumPy axis=0, 1, 2: агрегация трёхмерного массива

Курс «NumPy и pandas: практический тренажёр» · урок «Агрегации по массиву и по оси: sum, mean, min, max, argmin, argmax»

Потренируйтесь предсказывать, какое измерение исчезает после агрегации по выбранной оси.

Условие

Трёхмерный массив: агрегации по axis=0, axis=1, axis=2 и shape результата

Что уже дано

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

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

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

  1. Читает из stdin три целых числа D, R, C — количество «слоёв», строк и столбцов трёхмерного массива.
  2. Читает следующие D * R строк; каждая содержит C целых чисел через пробел. Из них создаёт трёхмерный массив cube через np.array(..., dtype=int).reshape(D, R, C) — shape (D, R, C).
  3. Вычисляет пять агрегаций и выводит результат каждой в два строки: первая — значения через пробел (или одно значение), вторая — shape кортежем Python:

Агрегация 1. np.sum(cube, axis=0) — сумма по «слоям» (ось 0 схлопывается). Shape результата (R, C).

Агрегация 2. np.mean(cube, axis=2) — среднее по столбцам (ось 2 схлопывается). Shape результата (D, R).

Агрегация 3. np.argmax(cube, axis=1) — номер строки с максимумом в каждом (слой, столбец). Shape результата (D, C).

Агрегация 4. np.min(cube, axis=0) — минимум по «слоям». Shape результата (R, C).

Агрегация 5. np.argmin(cube) без параметра axis — позиция минимума в развёрнутом массиве. Shape результата ().

Для многоэлементных результатов выводите значения через пробел в порядке обхода по умолчанию (flatten()). Для скаляра — одно число.

Ввод и вывод

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

Формат ввода

D R C
строка_0_слоя_0: c0 c1 ... c(C-1)
...
строка_(R-1)_слоя_0: c0 c1 ... c(C-1)
строка_0_слоя_1: c0 c1 ... c(C-1)
...
строка_(R-1)_слоя_(D-1): c0 c1 ... c(C-1)

Всего D * R строк с данными, каждая содержит C целых чисел.

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

Десять строк — по две на каждую из пяти агрегаций. Нечётная строка блока — значения через пробел или одно число. Чётная строка блока — shape в виде кортежа Python, например (3, 4) или ().

Примеры

Пример 1

Ввод
2 3 4
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19
20 21 22 23
Ожидаемый результат
12 14 16 18 20 22 24 26 28 30 32 34
(3, 4)
1.5 5.5 9.5 13.5 17.5 21.5
(2, 3)
2 2 2 2 2 2 2 2
(2, 4)
0 1 2 3 4 5 6 7 8 9 10 11
(3, 4)
0
()

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

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