С пандами легко.Сначала создайте DataFrame:
df = pd.DataFrame({'t':t,'y':y})
Затем пометьте группы в соответствии с временным порогом:
groups = (df.t.diff() > 10).cumsum()
Это дает вам [0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2]
, потому что cumsum()
при увеличении логического массивагде бы ввод не был истинным.
Наконец, используйте groupby()
:
df.groupby(groups).mean()
Это дает вам:
t y
t
0 5.315 17.117000
1 191.129 16.930333
2 368.840 17.675000
Если вам нужны простые массивы NumPy в концепросто отметьте .t.values
и .y.values
.
Если вы априори не знаете, какой временной порог использовать, я уверен, что вы можете придумать некоторую эвристику, возможно, включающую простую статистику по df.t
и df.t.diff()
.