Посчитайте, сколько раз элементы в массиве numpy последовательно удовлетворяют условию - PullRequest
0 голосов
/ 03 июля 2019

У меня есть массив numpy следующим образом:

import numpy as np
a = np.array([1, 4, 2, 6, 4, 4, 6, 2, 7, 6, 2, 8, 9, 3, 6, 3, 4, 4, 5, 8])

и постоянное число b=6

Я ищу число c, которое определяется числомраз элементы в a меньше, чем b 2 или более раз подряд.

Так что в этом примере это c=3

У меня нет рабочего кода, поэтому яспрашиваю это здесь.Основываясь на предыдущем вопросе , я могу использовать np.sum(a<b), чтобы узнать, сколько раз a<b.

print(np.sum(a<b))
#12

Теперь я хочу посчитать, сколько раз a в два или более раз подряд меньше, чем b.

Вот иллюстрация 3 групп дляэтот образец a:

1, 4, 2, 6, 4, 4, 6, 2, 7, 6, 2, 8, 9, 3, 6, 3, 4, 4, 5, 8  # numbers in a
1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0  # (a<b)
^^^^^^^-----^^^^-----------------------------^^^^^^^^^^---  # (a<b) 2+ times consecutively
   1         2                                    3

1 Ответ

2 голосов
/ 03 июля 2019

Вы можете использовать numpy маскирование и itertools.groupby.

from itertools import groupby

b = 6
sum(len(list(g))>=2 for i, g in groupby(a < b) if i)
#3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...