我有一个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
的次数定义。
因此在此示例中,c=3
我没有有效的代码,这就是为什么我在这里问这个问题。基于previous question,我可以使用np.sum(a<b)
来获得a<b
的次数。
print(np.sum(a<b))
#12
现在,我想计算a
连续小于b
两次或以上的次数。
以下是此示例a
中3个组的说明:
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
答案 0 :(得分:2)
您可以使用numpy
遮罩和itertools.groupby
。
from itertools import groupby
b = 6
sum(len(list(g))>=2 for i, g in groupby(a < b) if i)
#3