Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 - Fatal编程技术网

Python 如何在滑动窗口中保持第一个窗口不变?

Python 如何在滑动窗口中保持第一个窗口不变?,python,Python,我使用以下代码对时间序列数据应用滑动窗口。我想将我的第一个窗口设置为固定窗口,然后在所需输出中应用如下所示的滑动窗口 df = pd.DataFrame({'B': [0, 1, 2, 3, 4, 5, 6,7,8,9,10]}) def sliding_window(data, size): return [ data[x:x+size] for x in range( len(data) - size + 1 ) ] sliding_window(df, 7) 输出 所需输出

我使用以下代码对时间序列数据应用滑动窗口。我想将我的第一个窗口设置为固定窗口,然后在所需输出中应用如下所示的滑动窗口

df = pd.DataFrame({'B': [0, 1, 2, 3, 4, 5, 6,7,8,9,10]})

def sliding_window(data, size):
    return [ data[x:x+size] for x in range( len(data) - size + 1 ) ]


sliding_window(df, 7)
输出

所需输出 例如:

我这里用的是5号的固定窗口。它应该总是第一个窗口,滑动窗口和以前一样,只是它从第一个窗口滑动。如图中的左图所示。。

试试这个:

def rolling_window_maybe(data, initial_size: int):
    return [ data[:initial_size + x] for x in range( len(data) - initial_size ) ]
例如:

data = [1,2,3,4]
size = 2

data[:size + 0] == [1,2]
data[:size + 1] == [1,2,3]
data[:size + 2] == [1,2,3,4]

您想要的输出不是滑动窗口,但为什么您认为这不是滑动窗口?图中正确的部分是滑动窗口吗?正确的部分肯定是。看起来左边的部分被调用了。您的
滑动窗口
函数已经实现了这一点是的,绝对正确
def rolling_window_maybe(data, initial_size: int):
    return [ data[:initial_size + x] for x in range( len(data) - initial_size ) ]
data = [1,2,3,4]
size = 2

data[:size + 0] == [1,2]
data[:size + 1] == [1,2,3]
data[:size + 2] == [1,2,3,4]