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

NaN в числовых массивах: обнаружение и nan-устойчивые агрегаты

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

Двумерный массив с NaN: обнаружение пропусков и nan-устойчивые агрегаты по осям

Что уже дано

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

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

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

  1. Читает из stdin два целых числа R и C — число строк и столбцов матрицы.
  2. Читает следующие R строк; каждая содержит ровно C токенов через пробел. Токен "nan" означает пропуск, остальные токены — вещественные числа. Создаёт двумерный массив m через np.array(..., dtype=float) формы (R, C).
  3. Вычисляет булеву маску пропусков mask = np.isnan(m). Выводит одной строкой: any=<bool> all=<bool> count=<int>, где <bool> — результат np.any(mask) и np.all(mask) в виде True/False, а <int> — количество NaN, вычисленное через np.sum(mask).
  4. Вычисляет np.nansum(m, axis=0) — сумму по столбцам (игнорируя NaN). Выводит значения через пробел, округлённые до 2 знаков.
  5. Вычисляет np.nanmean(m, axis=1) — среднее по строкам (игнорируя NaN). Выводит значения через пробел, округлённые до 2 знаков.
  6. Вычисляет np.nanmin(m) и np.nanmax(m) — глобальный минимум и максимум по всему массиву. Выводит их через пробел, округлённые до 2 знаков.

Ввод и вывод

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

Формат ввода

R C
токен_00 токен_01 ... токен_0(C-1)
...
токен_(R-1)0 ... токен_(R-1)(C-1)

Токен nan (строчными буквами) обозначает пропуск. Остальные токены — числа, допустимы как целые, так и вещественные.

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

Ровно четыре строки:

any=<bool> all=<bool> count=<int>
<nansum по столбцам через пробел>
<nanmean по строкам через пробел>
<nanmin> <nanmax>
О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    3 3
    1.0 nan 3.0
    nan 5.0 6.0
    7.0 8.0 nan
    
    Ожидаемый вывод
    any=True all=False count=3
    8.00 13.00 9.00
    2.00 5.50 7.50
    1.00 8.00
    
Решение
Как проверяется решение

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

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