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

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

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

Двумерный массив: маска через |, инверсия и присваивание строкой

Что уже дано

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

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

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

  1. Читает из stdin два целых числа R и C — размер двумерного массива.
  2. Создаёт массив m через np.arange(R * C).reshape(R, C) с dtype=int.
  3. Строит маску mask_edge для элементов, которые меньше C (первая строка) или больше или равны R * C - C (последняя строка), используя оператор |. Выводит элементы m[mask_edge] через пробел, затем их shape.
  4. Строит инвертированную маску mask_inner = ~mask_edge для внутренних элементов. Выводит элементы m[mask_inner] через пробел, затем их shape.
  5. Выполняет m[mask_inner] = -1 — заменяет внутренние элементы на -1 на месте.
  6. Читает из stdin один целый индекс строки r_idx. Строит маску mask_row = m[r_idx] != -1 для элементов указанной строки, которые не равны -1. Выводит m[r_idx][mask_row] через пробел, затем m[r_idx][~mask_row] через пробел.

Ввод и вывод

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

Формат ввода

Строка 1: два целых числа R C через пробел (R ≥ 3, C ≥ 2, R * C ≥ 6).
Строка 2: одно целое число r_idx — индекс строки (0 ≤ r_idx < R).

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

Строка 1: элементы m[mask_edge] через пробел.
Строка 2: shape результата m[mask_edge] в виде (k,).
Строка 3: элементы m[mask_inner] через пробел.
Строка 4: shape результата m[mask_inner] в виде (k,).
Строка 5: элементы m[r_idx], которые не равны -1, через пробел (может быть пустой строкой, если таких нет).
Строка 6: элементы m[r_idx], которые равны -1, через пробел (может быть пустой строкой, если таких нет).

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

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

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

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

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