我试图在3D(z,x,y)np.array上创建一个3D(和2D)滑动窗口,以此数组的每个样本为中心。我目前有一个令人讨厌的一维实现,其中包含多个for循环。
我的想法是生成一个训练集,该训练集包含每个窗口中的值作为特征,以便每个计算出的窗口都是一个“训练示例”。因此,我最终得到的样本是位于中心的多维数据集,其舍入值由窗口大小给出(在2D情况下,它就像是周围值的平方)。我还考虑过在边缘进行填充,因此考虑了第一个和最后一个样本。
结果数组应该具有索引排序,这样我就可以将给定窗口中的每组值与中心样本相关联(这样,与z = 0,x = 0,y = 0相对应的值是第一个数组中的向量)
数据集相对较大,因此我想向量化的实现会有所帮助,因为我知道通过计算此类窗口会使其变得更大。 我的一维实现如下:
data_test = np.pad(data_test,((window_size,window_size),(0,0),(0,0)), 'constant', constant_values=(0,0))
A = []
for j in range(NX):
for k in range(NY):
for i in range(window_size,NZ-window_size):
a = []
a = data_test[i-window_size:i+window_size+1,j,k]
a = np.array(a)
A.append(a)
A = np.array(A)
如果解释不清楚,请原谅我。