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 через пробел.

Пример

Ввод
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
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

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

Связанные задачи