假设您有一些 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)]
< - values 大于给定 value 的区间索引。每行也可以有多个间隔,因此输出 [(3,6),[300,302]...]
也是可能的。
是否可以进行单行或任何简短的书面和最佳 Numpy 操作来获取具有特定条件的区间索引?
回答1
尝试:
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]]