计算时间序列中的序列数

Counting number of sequences in time series

我有包含 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

我建议使用像 '(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}