mask1 = np.hstack((False, arr[1:] < arr[:-1], False))
mask2 = mask1 & ~binary_closing(~mask1, [1, 1])
final_mask = mask2[1:] > mask2[:-1]
out = list(df.b[final_mask])
Как эффективно получить индексы строк DataFrame, где эти строки соответствуют определенным кумулятивным критериям?