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.swapaxes
或 np.transpose
或 np.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)
我正在研究 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.swapaxes
或 np.transpose
或 np.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)