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

Агрегации по массиву и по оси: sum, mean, min, max, argmin, argmax

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

Найди и исправь: неверные вызовы argmin, argmax и mean по оси

Что уже дано

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

В редакторе уже есть сломанный код. Он пытается выполнить четыре агрегации над двумерным массивом, но в каждой из четырёх строк допущена ровно одна ошибка:

  • в row_argmax — использован np.argmax(arr) без axis, хотя нужен номер столбца с максимумом в каждой строке;
  • в col_argmin — использован axis=1, хотя нужен номер строки с минимумом в каждом столбце;
  • в row_mean — использован axis=0, хотя нужно среднее по каждой строке (схлопнуть столбцы);
  • в global_min — использован np.argmin(arr), хотя нужно само минимальное значение через np.min.

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

Найдите и исправьте все четыре ошибки так, чтобы программа:

  1. Читала из stdin два целых числа R и C — размер массива.
  2. Читала следующие R строк, каждая содержит C целых чисел через пробел. Создавала двумерный массив arr через np.array(..., dtype=int) формы (R, C).
  3. Вычисляла и выводила ровно восемь строк:
  • строка 1: элементы row_argmax = np.argmax(arr, axis=1) через пробел — номера столбцов максимума в каждой строке;
  • строка 2: shape массива row_argmax в виде (R,);
  • строка 3: элементы col_argmin = np.argmin(arr, axis=0) через пробел — номера строк минимума в каждом столбце;
  • строка 4: shape массива col_argmin в виде (C,);
  • строка 5: элементы row_mean = np.mean(arr, axis=1) через пробел;
  • строка 6: shape массива row_mean в виде (R,);
  • строка 7: значение global_min = np.min(arr) — глобальный минимум;
  • строка 8: shape результата global_min в виде ().

Ввод и вывод

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

Формат ввода

R C
a00 a01 ... a0(C-1)
...
a(R-1)0 ... a(R-1)(C-1)

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

Восемь строк в порядке, описанном выше. Shape выводится строковым представлением кортежа Python, например (3,) или ().

О данных в ответах

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

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

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

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