python - 计算时间序列中的序列数
问题描述
我有包含 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}
推荐阅读
- c# - 对于 OData 和 ASP.NET Core,URL 太长
- css - 我收到 Uncaught TypeError: Cannot read property 'PureComponent' of undefined 在我的反应应用程序的控制台中。它期待什么?
- php - 根据条件合并多维数组
- azure - 我无法在 Azure Devops 组织中添加用户
- javascript - 我们会为仅从缓存中读取(Cloud FireStore)支付(成本)吗?
- javascript - 如何更新多选并让它在 Chrome 中实际显示新选项
- python - 正则表达式从列表中提取项目
- java - 将 txt 行放入不同的数组或数组列表中
- python - 根据字典 Python 的键值检查列表中的值
- c++ - 关于在转换运算符中使用显式关键字的警告