【发布时间】:2021-07-16 22:23:28
【问题描述】:
我正在尝试计算 numpy.array 中 True 值的数量,直到达到 False。
例如,如果你有
condition = np.array([True, True, True, False,
False, True, False, True, True, False, True])
那么想要的结果就是
np.array([3, 2, 1, 0, 0, 1, 0, 2, 1, 0, 1])
编辑:
Numpy first occurrence of value greater than existing value 不是我要问的,因为这是关于第一次满足条件的问题。我在问每次满足条件时连续满足多少次。 Find first sequence item that matches a criterion 也不起作用,因为我再次询问序列是否第一次满足条件。
【问题讨论】:
-
我认为这可以通过
reversing、cumsum和某种reset的组合来完成,当 False 时。但我不确定潜在的时间节省是否值得额外的工作。从头开始的简单迭代计算应该足够快,并且更容易开发。 -
np.hstack([np.array(list(gr)).cumsum()[::-1] for _, gr in groupby(condition)])
标签: python numpy boolean counting