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]
我有一个 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]