如何创建居中的3D滑动窗口

问题描述

我试图在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)),'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)

如果解释不清楚,请原谅我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)