NumPy: прямоугольный срез вместо цепочечной индексации
Найди и исправь: цепочечная индексация вместо прямоугольного среза
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе уже есть сломанный код. Он пытается выполнить три операции над двумерным массивом, но в каждой допущена ошибка: либо применена цепочечная индексация вместо одного выражения, либо перепутан целый индекс со срезом, либо неверно задан шаг.
Что нужно сделать
Найдите и исправьте все три ошибки так, чтобы программа:
- Читала из
stdinодну строку с четырьмя целыми числами:R,C,r,c. - Создавала двумерный массив
arrчерезnp.arange(R * C).reshape(R, C). - Вычисляла три результата и выводила их shape в три отдельные строки:
res1: прямоугольный блок строк0..r-1и столбцов0..c-1— shape должен быть(r, c);res2: каждая вторая строка (начиная с 0) и каждый второй столбец (начиная с 0) — shape должен быть(ceil(R/2), ceil(C/2));res3: столбецc-1целиком как одномерный массив — shape должен быть(R,).
Shape выводите строго в формате Python: (n,) для одномерных, (r, c) для двумерных.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
Одна строка: четыре целых числа R C r c, разделённые пробелами. Гарантируется: 1 <= r <= R, 1 <= c <= C.
Формат вывода
Три строки — shape результатов res1, res2, res3 в указанном порядке.
Пример
- Ввод
4 6 2 3
- Вывод
(2, 3) (2, 3) (4,)
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Срезы двумерного массива NumPy: строки, столбцы и шаг
- dtype NumPy: целые и вещественные массивы, типы элементов
- NumPy shape, ndim, size и dtype: атрибуты массива и задача
- NumPy reshape и transpose: разница на примере и задача
- NumPy newaxis и squeeze: вектор-строка и вектор-столбец
- NumPy: целочисленная индексация, присваивание и маска
