Numpy 将形状从 (3, 512, 660, 4) 更改为 (3,2048,660,1)

Numpy change shape from (3, 512, 660, 4) to (3,2048,660,1)

我正在研究 tensorflow,我在一个形状为 (3, 512, 660, 4) 的 numpy 数组中有一些汽车图像。

其中,3对应汽车索引,512*660是图片大小,4对应汽车的不同侧面。

(1, 512, 660, 1)对应Car1-前侧图,(1, 512, 660, 2)对应Car1-左侧图,依此类推

现在,我想将汽车的所有图像拼接成一张图像 (2048*660)。也就是说,我想将 (3, 512, 660, 4) 重塑为 (3, 2048, 660, 1)

有人可以帮助我吗?

我试过 reshape 函数,但它实际上是重叠图像而不是连接图像。

我们可以排列轴以将最后一个轴推到前面作为新的第三个轴并重塑。排列轴可以用 np.swapaxesnp.transposenp.rollaxis 来处理,给我们三个解决方案,就像这样 -

a.swapaxes(2,3).reshape(3,2048,660,1)
a.transpose(0,1,3,2).reshape(3,2048,660,1)
np.rollaxis(a,3,2).reshape(3,2048,660,1)

如果你想在前面有sides-index,相应地转置它-

a.transpose(0,3,1,2).reshape(3,2048,660,1)