[英]Count the number of times elements in a numpy array consecutively satisfy a condition
我有一個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
兩次或更多次的次數。
以下是此示例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
您可以使用numpy
掩碼和itertools.groupby
。
from itertools import groupby
b = 6
sum(len(list(g))>=2 for i, g in groupby(a < b) if i)
#3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.