计算时间序列中的序列数
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}
我有包含 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}