首页 > 解决方案 > 计算时间序列中的序列数

问题描述

我有包含 1 和 0 的二进制数据。我想计算数据中有多少不同的序列以及每个使用 python 出现的次数。

如果我有例如[1011111010000010] 第一个序列应该从 1 开始并在我们再次有 1 之前但在 0 之后结束。

例子:[10], [111110] ,[100000] , [10]

这是我用来查找 0 或 1 的最大序列的方法:

def max_seq(array, len):

   count = 0
   result = 0

   for i in range(len(0, len)):

      if(array[i] == 0):
         count += 1
         result = max(result, count)
      else:
         count = 0

   return result

标签: pythonstatisticsdata-science

解决方案


我建议使用简单的正则表达式'(1+0*)'来查找内容中的所有系列,以获取出现次数,您可以使用Counter

import re
from collections import Counter

parts = re.findall('(1+0*)', '1011111010000010')
print(parts)  # ['10', '111110', '100000', '10']

parts = Counter(re.findall('(1+0*)', '1011111010000010'))
print(parts)  # {'10': 2, '111110': 1, '100000': 1}


parts = Counter(re.findall('(1+0*)', '1011010011010010110010110010101'))
print(parts)  # {'10': 3, '110': 2, '100': 2, '1100': 1, '1': 1}

推荐阅读