Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表中事件间隔之间的频率_Python_List_Time_Frequency - Fatal编程技术网

Python 列表中事件间隔之间的频率

Python 列表中事件间隔之间的频率,python,list,time,frequency,Python,List,Time,Frequency,我有一份记录事件发生的清单: a = [0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1] 1显示给定时间步中事件的发生,0是未观察到事件的时间步 我有兴趣在python上估计事件间隔的统计数据。也就是说,我没有记录任何事件(0)的时间统计:例如 - mean of interval of events: (2+4+3)/3 = 3 - max duration of an interval of no-event: 4 有什么建议我该怎么做 非常感

我有一份记录事件发生的清单:

a = [0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1]
1显示给定时间步中事件的发生,0是未观察到事件的时间步

我有兴趣在python上估计事件间隔的统计数据。也就是说,我没有记录任何事件(0)的时间统计:例如

- mean of interval of events: (2+4+3)/3 = 3
- max duration of an interval of no-event: 4
有什么建议我该怎么做


非常感谢

这里有一种方法可以让你随心所欲。当然有更有效的方法,但这很简单:

a = [0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,1]
a = map(str,a) # Convert numbers to strings
a = ''.join(a) # Concatenate all of the strings
a = a.split('1') # Use the handy split function to find the zeros
a = filter(lambda x: len(x) > 0, a) # select the zeros only
a = map(len,a) # convert zero sequences to lengths
print a
结果如下

[2, 2, 4, 3]

你试过什么?你遇到了什么问题?我不知道怎么做!组合区间序列有很多可能性,你能解释一下吗?您对解决您的问题(或您迄今为止尝试过的任何代码)有何想法?在
(2+4+3)/3
中,
2
4
3
代表什么。开始时不包括
0
s的
0
s计数?如果您只给出
itertools.groupby()
的参考,让用户自己实现算法,那会更好
interval_zeros = [len(list(group)) for z,group in itertools.groupby(data) if z== 0]
print sum(interval_zeros)/float(len(interval_zeros))