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

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

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

Найди и исправь: ошибки в булевых масках и присваивании по маске

Что уже дано

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

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

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

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

  1. Читала из stdin одну строку с целыми числами через пробел — элементы массива arr с dtype=int.
  2. Читала вторую строку с двумя целыми числами lo и hi.
  3. Строила маску mask_in = (arr >= lo) & (arr <= hi) и выводила элементы arr[mask_in] через пробел, затем их количество.
  4. Строила маску mask_out = ~mask_in и выводила количество элементов arr[mask_out].
  5. Выполняла arr[mask_out] = -1 и выводила итоговый массив arr через пробел, затем количество элементов, равных -1, через маску arr == -1.

Ввод и вывод

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

Формат ввода

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

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

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

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

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    3 7 1 9 4 2 11
    3 9
    Ожидаемый вывод
    3 7 9 4
    4
    3
    3 7 -1 9 4 -1 -1
    3
    
Решение
Как проверяется решение

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

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