#python #pandas #dataframe #signal-processing #threshold
Вопрос:
Я пытаюсь классифицировать данные с помощью python, сначала устанавливая порог, а затем классифицируя его, если он превышает порог в течение определенного периода времени.
Пример данных: Мой порог значения >4 и мой порог ряда >>2>>
[5,5,1,1,1,5,5,5,4,4,4,4,5,5,5,5,5]
Ожидаемый результат: Обратите внимание, что первые два значения равны нулю, потому что они не соответствуют порогу ряда
[0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1]
Итак, я хочу классифицировать данные как 1 только в том случае, если они соответствуют как ряду, так и пороговому значению.
Кто-нибудь знает, как лучше всего решить эту проблему с помощью python?
Комментарии:
1. Я получаю другой результат, следуя вашим указаниям. Я получаю
[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1]
. Так, например, последние пять значений, только три последних значения проходят оба теста, потому что для первых двух значений тест серии находит только одно или два значения, которые проходят проверку значений. Либо пример неверен, либо я неправильно понимаю ваши указания.
Ответ №1:
IIUC, вы можете использовать numpy
следующим образом:
import numpy as np
a = np.array([5,5,1,1,1,5,5,5,4,4,4,4,5,5,5,5,5])
v_threshold = 4
s_threshold = 2
out = np.zeros_like(a)
out[s_threshold:] = a[s_threshold:] > v_threshold
#array([0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1])