在稀疏值列表中获取最长的子序列
Getting longest subsequence in sparse list of values
我有一个很长的 unix 时间列表(四舍五入为 10 秒),我需要在该列表中找到间隔 10 秒的最长连续时间戳序列。
[1441831770.0, 1441831780.0, 1441831790.0, ... 1442466860.0, 1442466870.0, 1442466880.0]
如果我有一个包含 100 个时间戳的列表,其中 60 个在 600 秒长的序列中,然后有 4 分钟的休息时间,然后是另外 40 个在 400 秒长的序列中,我会 return 60 秒长的时间戳子列表。
有没有有效的方法来做到这一点? itertools
还是 numpy
?还是必须硬编码?
谢谢。
有itertools example in the docs that finds consecutive runs。这是它对你的案例的改编(未经测试):
#!/usr/bin/env python2
from itertools import groupby
data = [1441831770.0, 1441831780.0, 1441831790.0, ...]
longest = []
for k, g in groupby(enumerate(data), lambda (i,x): i*10 - int(x)):
longest = max(longest, [x for _, x in g], key=len)
print longest
我有一个很长的 unix 时间列表(四舍五入为 10 秒),我需要在该列表中找到间隔 10 秒的最长连续时间戳序列。
[1441831770.0, 1441831780.0, 1441831790.0, ... 1442466860.0, 1442466870.0, 1442466880.0]
如果我有一个包含 100 个时间戳的列表,其中 60 个在 600 秒长的序列中,然后有 4 分钟的休息时间,然后是另外 40 个在 400 秒长的序列中,我会 return 60 秒长的时间戳子列表。
有没有有效的方法来做到这一点? itertools
还是 numpy
?还是必须硬编码?
谢谢。
有itertools example in the docs that finds consecutive runs。这是它对你的案例的改编(未经测试):
#!/usr/bin/env python2
from itertools import groupby
data = [1441831770.0, 1441831780.0, 1441831790.0, ...]
longest = []
for k, g in groupby(enumerate(data), lambda (i,x): i*10 - int(x)):
longest = max(longest, [x for _, x in g], key=len)
print longest