Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成重叠序列_Python_Sequence - Fatal编程技术网

Python 生成重叠序列

Python 生成重叠序列,python,sequence,Python,Sequence,我有一个包含以下信息的数据集。timebin变量是数据时间段的标识符。可以假设timebin是唯一的且没有任何间隙(即,如果数据包含1和3,则数据将始终包含2) 我想生成所有具有一定重叠量的固定长度l序列o。例如,对于l=4和o=2将输出以下几组指数: [[0,1,2,3], [2,3,4,5], [4,5,6,7]] 这可以通过使用循环来完成,但我想知道是否有一种更优雅、更高效的方法可以在python中实现?使用列表理解: overlap = 2 data = [0, 1, 2 ,3 ,4,

我有一个包含以下信息的数据集。
timebin
变量是数据时间段的标识符。可以假设
timebin
是唯一的且没有任何间隙(即,如果数据包含1和3,则数据将始终包含2)

我想生成所有具有一定重叠量的固定长度
l
序列
o
。例如,对于
l=4
o=2
将输出以下几组指数:

[[0,1,2,3], [2,3,4,5], [4,5,6,7]]

这可以通过使用循环来完成,但我想知道是否有一种更优雅、更高效的方法可以在python中实现?

使用列表理解:

overlap = 2
data = [0, 1, 2 ,3 ,4, 5 ,6 ,7]
groups = [data[i: i + overlap * 2]  for i in range(len(data) - overlap * 2 + 1)]
l = 4
o = 2
e = 7

print([[x for x in range(s, s + l)] for s in range(0, e, o) if s + l <= e + 1])

使用列表理解:

l = 4
o = 2
e = 7

print([[x for x in range(s, s + l)] for s in range(0, e, o) if s + l <= e + 1])

所提供的其他数据是否以任何方式涉及? 仅根据您的问题,您就可以生成以下序列:


所提供的其他数据是否以任何方式涉及? 仅根据您的问题,您就可以生成以下序列:


为什么要停在7?这只是为了简化示例:)好的,我现在看到您的数据范围是从0到7。这就是为什么:)为什么停在7?这只是为了简化示例:)好的,我现在看到您的数据范围是0到7。这就是为什么:)
[[0, 1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7]]
>>> l = 4
>>> o = 2
>>> [[x for x in range(s, s+l)] for s in range(20)[::(l-o)]]
[0, 1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7], [6, 7, 8, 9], [8, 9, 10, 11],
[10, 11, 12, 13], [12, 13, 14, 15], [14, 15, 16, 17], [16, 17, 18, 19],
[18, 19, 20, 21]]