Входные данные - это пары двумерных массивов (временная метка, значение), упорядоченные по временной метке:
np.array([[50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],
[ 2, 3, 5, 6, 4, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3]])
Я хочу найти временные окна, в которых значение превышает пороговое значение (например,> = 4). Кажется, я могу выполнить пороговую часть с логическим условием и отобразить обратно на отметки времени с помощью np.extract()
:
>>> a[1] >= 4
array([False, False, True, True, True, False, False, False, False,
True, True, True, False, False, False, False, False])
>>> np.extract(a[1] >= 4, a[0])
array([52, 53, 54, 59, 60, 61])
Но из-за этого мне нужны первая и последняя временные метки каждого окна, соответствующие порогу (т. Е. [[52, 54], [59, 61]]
), где я не могу найти правильный подход.