np.where и np.clip в NumPy: задача без циклов
При вызове np.where(condition, x, y) для каждого элемента выбирается значение из x или y в зависимости от условия. np.clip решает другую задачу: удерживает значения в заданном диапазоне.
Для массива a = np.array([-3, 2, 9]) выражение np.where(a < 0, 0, a) заменит только отрицательные элементы. Выражение np.clip(a, 0, 5) дополнительно ограничит значения сверху. Операции применяются ко всему массиву без Python-цикла.
Ниже — упражнение, в котором эти операции сочетаются с арифметикой массива. Соблюдайте порядок действий из условия и сравните результат через гостевую проверку.
Пять строк вывода: степень, остаток, where, clip и арифметика
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinодну строку с целыми числами через пробел — элементы массиваa(от 3 до 7 элементов, все положительные, не менее 2). - Читает вторую строку с тремя целыми числами:
p lo hi— показатель степени, нижняя и верхняя границы. - Вычисляет и выводит ровно пять строк в следующем порядке:
- Строка 1: элементы
a ** pчерез пробел. - Строка 2: элементы
a % pчерез пробел. - Строка 3: элементы результата
np.where(a >= lo, "big", "small")через пробел. - Строка 4: элементы результата
np.where(a % 2 == 0, 1, 0)через пробел. - Строка 5: элементы
np.clip(a, lo, hi)через пробел.
Каждая строка — значения через пробел, без лишних пробелов в начале и в конце.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
- Строка 1: целые числа через пробел — элементы массива
a(от 3 до 7 элементов, все ≥ 2). - Строка 2: три целых числа через пробел:
p lo hi(2 ≤ p ≤ 4, lo < hi, оба входят в диапазон значенийa).
Формат вывода
Ровно пять строк: a**p, a%p, результат where со строками, результат where с 0/1, clip(a, lo, hi) — каждый через пробел.
Пример
- Ввод
2 3 4 5 6 2 4 5
- Вывод
4 9 16 25 36 0 1 0 1 0 small small big big big 1 0 1 0 1 4 4 4 5 5
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- np.clip в NumPy: ограничение значений — пример и задача
- dtype NumPy: целые и вещественные массивы, типы элементов
- NumPy shape, ndim, size и dtype: атрибуты массива и задача
- Срезы двумерного массива NumPy: строки, столбцы и шаг
- NumPy reshape и transpose: разница на примере и задача
- NumPy newaxis и squeeze: вектор-строка и вектор-столбец
