【问题标题】:Count the number of times elements in a numpy array consecutively satisfy a condition计算numpy数组中元素连续满足条件的次数
【发布时间】:2019-11-14 10:02:20
【问题描述】:

我有一个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 中的元素连续 2 次或更多次小于 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

【问题讨论】:

标签: python numpy


【解决方案1】:

您可以使用numpy 屏蔽和itertools.groupby

from itertools import groupby

b = 6
sum(len(list(g))>=2 for i, g in groupby(a < b) if i)
#3

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2018-09-20
    • 2012-01-14
    • 2019-03-11
    • 1970-01-01
    • 2011-05-28
    • 2021-02-15
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多