如何在numpy中更改4D阵列中通道内部的顺序



我有一个TxCxHxW形状的数组,如何更改通道内的顺序。

例如,我有a,喜欢更改它,所以我得到b如下(请注意,这只是一个例子,通常,我正在寻找一种快速更改通道内顺序的方法,顺序的更改是而不是随机的,我们总是有这种模式(:

a = np.arange(48).reshape(4,3,2,2)
b = np.zeros_like(a)
b[0,:,:,:] =a[1,:,:,:]
b[1,:,:,:] =a[3,:,:,:]
b[2,:,:,:] =a[0,:,:,:]
b[3,:,:,:] =a[2,:,:,:]

要获得与代码相同的结果,可以执行以下操作:

a = np.arange(48).reshape(4,3,2,2)
b = a[[1,3,0,2], :, :]

您可能需要这样:注意:第二行([0,-2,-1,-3](是目标维度的原始维度之间的距离

# convert numpy matrix dimension [N, H, W, C] -> [N, C, H, W]
np_train_samples = np.moveaxis(np_train_samples, [0, 1, 2, 3],
[0, -2, -1, -3])

最新更新