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

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

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

Целочисленные индексы: отбор, присваивание и маска ненулевых

Что уже дано

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

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

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

  1. Читает из stdin одну строку с целыми числами через пробел — элементы массива data. Создаёт data = np.array([...], dtype=int).
  2. Читает вторую строку с целыми числами через пробел — массив целочисленных индексов idx. Создаёт idx = np.array([...], dtype=int).
  3. Выводит элементы data[idx] через пробел, затем на следующей строке — shape результата в виде (k,).
  4. Выполняет data[idx] = 0 — присваивает ноль всем позициям из idx на месте.
  5. Строит булеву маску mask_nz = data != 0 для ненулевых элементов.
  6. Выводит элементы data[mask_nz] через пробел, затем на следующей строке — их количество (одно целое число, равное data[mask_nz].shape[0]).
  7. Выводит итоговый массив data через пробел.

Ввод и вывод

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

Формат ввода

Строка 1: целые числа через пробел — элементы массива data (не менее четырёх).
Строка 2: целые числа через пробел — индексы idx (все в диапазоне [0, len(data)); могут не повторяться).

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

Строка 1: элементы data[idx] через пробел.
Строка 2: shape результата data[idx] в виде (k,).
Строка 3: ненулевые элементы data после присваивания через пробел.
Строка 4: количество ненулевых элементов (одно целое).
Строка 5: итоговый массив data через пробел.

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

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    50 10 80 30 70 20 60
    2 5 0 6
    Ожидаемый вывод
    80 20 50 60
    (4,)
    10 30 70
    3
    0 10 0 30 70 0 0
Решение
Как проверяется решение

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

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