【问题标题】:Counting number of sequences in time series计算时间序列中的序列数
【发布时间】:2021-04-20 10:35:01
【问题描述】:

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

【问题讨论】:

  • 你试过什么?
  • 应该10101 提供10, 10 ,1 还是只提供10, 10
  • 我不是学生,不知道你为什么认为这是某种家庭作业。我想不出任何可以做到这一点的代码,我能做的最好的就是在我拥有的数组中找到 1 的最大序列。在我在论坛中的搜索中,我找不到一个解决方案,其中序列的开头和结尾与我提到的一样。
  • 始终分享您的尝试,无论大小。我不认为您是学生,请查看(home)work

标签: python statistics data-science


【解决方案1】:

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

【讨论】:

  • 这适用于包含 3000 - 10 000 个观测值的系列或数组吗?
  • @Troublesome 如果你有数据为什么不试试呢?字符串的长度是 10000 吗?我会的
  • 是时间序列数据,不是字符串。
猜你喜欢
  • 2020-05-06
  • 2018-11-30
  • 2019-07-31
  • 2021-07-16
  • 2019-09-19
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多