重塑4D / 5D阵列的提示或模式,(视频到帧)

时间:2018-05-24 06:46:51

标签: numpy reshape pytorch

我发现在numpy / pytorch中可视化重塑4D 5D阵列真的很难。 (我假设两个都重塑了类似的模式,我目前正在使用pytorch!)。

就像假设我的视频尺寸为[N x C x D x H x W]

num videos = x 频道视频 x 制作视频 x 高度视频 x 宽度视频

假设我想将视频整形为[N x C x H x W],我应该如何进行重塑。

简单应用x = x.reshape(N*D, C, H, W)实际上并没有这样做,它会给出错误的元素顺序。

你能帮助我解决这个问题,以及你使用过的模式的直觉吗?

  

在旁注中,如果我有一个视频(即假设1x3x100x256x256我使用:

     

以下代码方法:

     

x = x.squeeze(0).T.reshape((100,3,256,256))[:,:,None,:,:]并且有效

     

大。无法找出超过1个视频。

谢谢!

根据要求:

input = np.random.randn(N,C,D,H,W)
output = np.zeros((N*D,C,H,W))

根据请求,基于for循环的代码显示我想要的内容 for h in range(N): for i in range(D): for j in range(C): for k in range(H): for l in range(W): output[h*D + i,j,k,l] = input[h,j,i,k,l]

1 个答案:

答案 0 :(得分:3)

只需交换第二个和第三个轴,然后将新的第二个轴(旧的第三个轴)与第一个轴合并并重新整形 -

output = input_array.swapaxes(1,2).reshape(N*D,C,H,W)

我们也可以使用transposeinput_array.transpose(0,2,1,3,4)来获得相同的交换轴效果。

有关一般的直观方法,请参阅Intuition and idea behind reshaping 4D array to 2D array in NumPy