Python 为Ndarray滚动窗口

Python 为Ndarray滚动窗口,python,pandas,numpy,vstack,Python,Pandas,Numpy,Vstack,我有一个n维数组,形状为30,2,2和2000个元素。最后一个数组的形状是2000,30,2,2。现在我想在一个新数组中堆叠200个滚动元素。所以我假设我的最终数组看起来像1801200,30,2,2,1800中的每个元素都有200个30,2,2数组的样本。如何用python创建这个滚动窗口。我尝试过使用vstack,但不完全确定如何达到预期效果 import numpy as np input = np.zeros((2000, 30, 2, 2)) desired_output = np.

我有一个n维数组,形状为30,2,2和2000个元素。最后一个数组的形状是2000,30,2,2。现在我想在一个新数组中堆叠200个滚动元素。所以我假设我的最终数组看起来像1801200,30,2,2,1800中的每个元素都有200个30,2,2数组的样本。如何用python创建这个滚动窗口。我尝试过使用vstack,但不完全确定如何达到预期效果

import numpy as np

input = np.zeros((2000, 30, 2, 2))
desired_output = np.zeros((1801, 200, 30, 2, 2))

您可以使用以下方法将第一个维度的数组切片并将窗口大小的数组堆叠在一起:

将numpy作为np导入 a=np.zeros2000,30,2,2 ws=200 n=a.形状[0] r=np.stack[a[i:i+ws]用于rangen ws+1中的i] r、 形状 1801, 200, 30, 2, 2
您可以使用以下方法将第一个维度的数组切片并将窗口大小的数组堆叠在一起:

将numpy作为np导入 a=np.zeros2000,30,2,2 ws=200 n=a.形状[0] r=np.stack[a[i:i+ws]用于rangen ws+1中的i] r、 形状 1801, 200, 30, 2, 2 我们可以利用based获得滑动窗口,从而解决我们的问题

输出将是输入数组的一个视图,因此,它在运行时实际上是免费的。执行工作将是:-

from skimage.util.shape import view_as_windows

out = view_as_windows(input,(200,1,1,1))[...,0,0,0].transpose(0,4,1,2,3)
我们可以利用based获得滑动窗口,从而解决我们的问题

输出将是输入数组的一个视图,因此,它在运行时实际上是免费的。执行工作将是:-

from skimage.util.shape import view_as_windows

out = view_as_windows(input,(200,1,1,1))[...,0,0,0].transpose(0,4,1,2,3)

您能否将样本输入与预期输出共享?您能否将样本输入与预期输出共享?