Задача курса

NumPy: целочисленная индексация, присваивание и маска

Курс «NumPy и pandas: практический тренажёр» · урок «Продвинутая индексация: булевы маски и целочисленные массивы индексов»

Условие

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

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через 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

Ввод
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
Без регистрации · результат не сохраняется