gpt4 book ai didi

python - 计算列表中连续真值的长度

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:45 25 4
gpt4 key购买 nike

这个问题基本上可以分为两部分。我有一组二进制值,指示给定信号是否存在。鉴于每个值也对应于一个时间单位(在本例中为分钟),我试图确定信号在我分析的整个时间段内出现在整个值列表中的平均存在时间。例如,如果我有以下列表:

[0,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0]

我可以看到信号出现了 3 次不同的时间长度(即在第一种情况下持续 3 分钟)。但是,如果我想计算每次出现的平均时间长度,我需要指示存在多少个独立的信号实例(即 3 个)。我尝试了各种基于索引的策略,例如:

arb_ops.index(1)

找到下一次出现的真值并相应地找到下一次出现的 0 以找到长度,但我无法将其上下文化为整个数组的递归函数。

最佳答案

你可以使用 itertools.groupby()对连续相等的元素进行分组。要计算组的长度,请将迭代器转换为列表并对其应用 len():

>>> from itertools import groupby
>>> lst = [0 ,0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0 ,1, 1, 1, 1, 0]
>>> for k, g in groupby(lst):
... g = list(g)
... print(k, g, len(g))
...
0 [0, 0, 0] 3
1 [1, 1, 1] 3
0 [0, 0] 2
1 [1] 1
0 [0, 0, 0] 3
1 [1, 1, 1, 1] 4
0 [0] 1

关于python - 计算列表中连续真值的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com