NumPy: массивы, форма и индексация

Продвинутая индексация: булевы маски и целочисленные массивы индексов

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

Комбинированные маски и присваивание: зануление выбросов

Что уже дано

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

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

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

  1. Читает из stdin одну строку с целыми числами, разделёнными пробелами. Создаёт из них одномерный ndarray с именем arr через np.array с dtype=int.
  2. Читает вторую строку с двумя целыми числами lo и hi — границы «нормального» диапазона.
  3. Строит маску mask_normal для элементов arr, которые одновременно больше или равны lo и меньше или равны hi, используя оператор &.
  4. Выводит через пробел элементы arr[mask_normal], затем на следующей строке — их количество (shape результата).
  5. Строит маску mask_out как инверсию mask_normal через ~.
  6. Присваивает arr[mask_out] = -1 (зануляет выбросы на месте).
  7. Выводит изменённый массив arr через пробел, затем на следующей строке — количество элементов, равных -1 (используйте маску arr == -1 и её shape).

Ввод и вывод

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

Формат ввода

Строка 1: целые числа через пробел — элементы массива (не менее двух).
Строка 2: два целых числа lo hi через пробел.

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

Строка 1: элементы arr[mask_normal] через пробел.
Строка 2: количество нормальных элементов (одно целое).
Строка 3: изменённый arr через пробел.
Строка 4: количество элементов, равных -1 (одно целое).

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

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    12 47 3 28 -5 9
    5 30
    Ожидаемый вывод
    12 28 9
    3
    12 -1 -1 28 -1 9
    3
Решение
Как проверяется решение

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

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