np.clip в NumPy: ограничение значений — пример и задача

np.clip(a, lo, hi) ограничивает каждый элемент массива: значения меньше lo становятся равны нижней границе, а значения больше hi — верхней. Элементы внутри диапазона сохраняются.

Например, np.clip([-2, 6, 12], 0, 10) даёт массив [0, 6, 10]. Обычный вызов возвращает результат; чтобы записать его в исходный массив, нужен явный параметр out.

В упражнении ниже нужно отдельно посчитать элементы внутри и вне диапазона, применить ограничение и проверить, что исходные данные сохранились. Напишите код и запустите гостевую проверку; регистрация для проверки не требуется.

Аудит насыщения: подсчёт выбросов и clip за один проход

Что уже дано

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

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

Напишите программу, которая анализирует насыщение целочисленного массива:

  1. Читает из stdin строку с целыми числами через пробел — элементы массива data. Создаёт data = np.array([...], dtype=int).
  2. Читает вторую строку с двумя целыми числами lo и hi — границы допустимого диапазона (lo < hi).
  3. Вычисляет три счётчика с помощью булевой выборки и len:
  • n_below — количество элементов строго меньше lo;
  • n_inside — количество элементов, удовлетворяющих (data >= lo) & (data <= hi);
  • n_above — количество элементов строго больше hi.
  1. Выводит первую строку: below=<n_below> inside=<n_inside> above=<n_above>.
  2. Вычисляет clipped = np.clip(data, lo, hi) и выводит элементы clipped через пробел.
  3. Выводит элементы исходного массива data через пробел — убедитесь, что он не изменился.

Итого ровно три строки вывода.

Ввод и вывод

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

Формат ввода

  • Строка 1: целые числа через пробел — элементы массива data (от 3 до 10 элементов).
  • Строка 2: два целых числа через пробел: lo hi.

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

Ровно три строки:

  1. below=<n_below> inside=<n_inside> above=<n_above> — счётчики насыщения.
  2. Элементы clipped через пробел.
  3. Элементы исходного data через пробел.

Пример

Ввод
-5 0 3 8 15 7 2
0 10
Вывод
below=1 inside=5 above=1
0 0 3 8 10 7 2
-5 0 3 8 15 7 2
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

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

Связанные задачи