NumPy: вычисления и устройство массивов

Векторная арифметика и where/clip

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

Нормализация датчика: clip, where и арифметика за один проход

Что уже дано

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

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

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

  1. Читает из stdin одну строку с целыми числами, разделёнными пробелами — это сырые показания датчика. Создаёт одномерный массив raw через np.array(..., dtype=int).
  2. Читает вторую строку с четырьмя целыми числами: lo hi scale offset — параметры обработки.
  3. Шаг 1. Ограничивает raw диапазоном [lo, hi] через np.clip и сохраняет в clipped. Выводит clipped в одну строку (значения через пробел).
  4. Шаг 2. Создаёт массив scaled через поэлементную арифметику: (clipped - lo) * scale + offset. Выводит scaled в одну строку.
  5. Шаг 3. Создаёт массив flags через np.where: там, где raw > hi, ставит 1; там, где raw < lo, ставит -1; все остальные позиции получают 0. Реализуйте это двумя последовательными вызовами np.where (сначала обработайте верхний выброс, затем нижний). Выводит flags в одну строку.
  6. Выводит исходный массив raw в одну строку — чтобы убедиться, что он не изменился.

Каждый из четырёх выводов — отдельная строка, значения разделены пробелами, без лишних пробелов в начале и конце.

Ввод и вывод

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

Формат ввода

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

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

Ровно четыре строки:

  1. Элементы clipped через пробел.
  2. Элементы scaled через пробел (могут быть дробными — выводите как есть через print).
  3. Элементы flags через пробел.
  4. Элементы raw через пробел.
О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    -15 -5 0 10 22 37 45 100
    0 40 2 5
    Ожидаемый вывод
    0 0 0 10 22 37 40 40
    5 5 5 25 49 79 85 85
    -1 -1 0 0 0 0 1 1
    -15 -5 0 10 22 37 45 100
Решение
Как проверяется решение

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

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