Узор в серии Numpy - PullRequest
       8

Узор в серии Numpy

0 голосов
/ 28 мая 2020

У меня есть массив 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) Между каждым нулем вернуть любой последовательный набор чисел, где сумма больше или равна 10

5,6
1,2,8
10

б) Между каждым набором последовательных 5 чисел возвращать последовательный набор чисел, где сумма больше или равна 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

1 Ответ

1 голос
/ 28 мая 2020

Для этого вы можете вырезать фрагменты внутри списка.

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]
...