Select Numpy 中区间的索引

Select indexes of intervals in Numpy

假设你有一些 1d- numpy 数组,比如 arr = np.array([0,0,0.2,0.6,1,1,0.7,0.3,0,0])

这里如果是 fn(arr, arr > 0.5) => [(3,6)] <- inverval 的索引,其中值是 biggen 然后给定值。 每行也可以有多个间隔,因此输出 [(3,6),[300,302]...] 也是可能的。

是否可以进行一行,或任何简短的书面最佳Numpy操作 获取具有特定条件的区间索引?

尝试:

arr = np.array([0, 0, 0.2, 0.6, 1, 1, 0.7, 0.3, 0, 0])

ranges = np.where(np.diff(arr > 0.5, prepend=0, append=0))[0].reshape(-1, 2)
ranges[:, 1] -= 1

print(ranges)

打印:

[[3 6]]

对于:

arr = np.array([0.6, 0.7, 0, 0, 0.8, 0.9])

打印:

[[0 1]
 [4 5]]