Numpy 系列中的模式

Pattern in a Numpy Series

我有一个 Python Numpy 数组:

a = np.array([1,0,5,6,0,1,2,5,0,1,2,8,0,0,0,0,1,1,2,3,0,0,10,0])

我正在尝试查找以下内容:

a) 在每个零之间,return 总和等于或大于 10 的任何连续数字集

5,6
1,2,8
10

b) 在每组连续的 5 个数字之间,return 个连续的数字组,其中总和等于或大于 10

1,0,5,6,0
0,5,6,0,1
5,6,0,1,2
6,0,1,2,5
2,5,0,1,2
5,0,1,2,8
0,1,2,8,0
1,2,8,0,0
2,8,0,0,0
2,3,0,0,10
3,0,0,10,0

您可以在列表理解中使用切片来执行此操作。

idxs = np.where(a==0)[0]
group1 = [a[idxs[i-1]+1:idxs[i]] for i in range(1,len(idxs)) if a[idxs[i-1]+1:idxs[i]].sum()>=10]
group2 = [a[i:i+5] for i in range(len(a)-4) if a[i:i+5].sum()>=10]