簡體   English   中英

計算numpy數組中元素連續滿足條件的次數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM