Векторная арифметика и where/clip
Содержание курса
Нормализация датчика: clip, where и арифметика за один проход
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая обрабатывает сигнал датчика:
- Читает из
stdinодну строку с целыми числами, разделёнными пробелами — это сырые показания датчика. Создаёт одномерный массивrawчерезnp.array(..., dtype=int). - Читает вторую строку с четырьмя целыми числами:
lo hi scale offset— параметры обработки. - Шаг 1. Ограничивает
rawдиапазоном[lo, hi]черезnp.clipи сохраняет вclipped. Выводитclippedв одну строку (значения через пробел). - Шаг 2. Создаёт массив
scaledчерез поэлементную арифметику:(clipped - lo) * scale + offset. Выводитscaledв одну строку. - Шаг 3. Создаёт массив
flagsчерезnp.where: там, гдеraw > hi, ставит1; там, гдеraw < lo, ставит-1; все остальные позиции получают0. Реализуйте это двумя последовательными вызовамиnp.where(сначала обработайте верхний выброс, затем нижний). Выводитflagsв одну строку. - Выводит исходный массив
rawв одну строку — чтобы убедиться, что он не изменился.
Каждый из четырёх выводов — отдельная строка, значения разделены пробелами, без лишних пробелов в начале и конце.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
- Строка 1: целые числа через пробел — элементы массива
raw(от 2 до 10 элементов). - Строка 2: четыре целых числа через пробел:
lo hi scale offset.
Формат вывода
Ровно четыре строки:
- Элементы
clippedчерез пробел. - Элементы
scaledчерез пробел (могут быть дробными — выводите как есть черезprint). - Элементы
flagsчерез пробел. - Элементы
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 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
