Продвинутая индексация: булевы маски и целочисленные массивы индексов
Содержание курса
Целочисленные индексы: отбор, присваивание и маска ненулевых
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinодну строку с целыми числами через пробел — элементы массиваdata. Создаётdata = np.array([...], dtype=int). - Читает вторую строку с целыми числами через пробел — массив целочисленных индексов
idx. Создаётidx = np.array([...], dtype=int). - Выводит элементы
data[idx]через пробел, затем на следующей строке —shapeрезультата в виде(k,). - Выполняет
data[idx] = 0— присваивает ноль всем позициям изidxна месте. - Строит булеву маску
mask_nz = data != 0для ненулевых элементов. - Выводит элементы
data[mask_nz]через пробел, затем на следующей строке — их количество (одно целое число, равноеdata[mask_nz].shape[0]). - Выводит итоговый массив
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
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
