如何将数组的形状从ixMxNx3更改为(M * N)xix3?
我有一个ixMxNx3数组L.您可以将L视为包含i个图像的数组,每个图像的高度= M,宽度= N,并且在每个像素中它都有一个三维向量(或rgb)。设P = M * N.我可以通过L.reshape将其形状改为ixPx3(i,P,3)。 (我希望它真的改变成我想要的形状)。如何将其形状更改为Pxix3?即包含P个点的阵列,每个点具有i个图像,该点的每个图像具有三维矢量。
如何完成这种形状的改变?
答案 0 :(得分:1)
numpy.rollaxis
可以移动NumPy数组中轴的位置:
L = L.reshape([i, P, 3])
L = numpy.rollaxis(L, 1)
它需要3个参数,一个是可选的。第一个是阵列,第二个是要移动的轴,第三个是混乱记录为“轴被滚动直到它位于此位置之前”。基本上,如果要将i th 轴移动到j th 位置和j<i
,则第三个参数应为j。如果j>i
,则第三个参数应为j + 1。我不知道为什么会这样。第三个参数默认为0.