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]]
假设你有一些 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]]