numpy 将图像通道顺序从第一个通道更改为最后一个通道

0aydgbwb  于 2023-08-05  发布在  其他
关注(0)|答案(3)|浏览(193)

我想把这个numpy images数组的顺序改为channel_last training_data:(2387,1,350,350)至(2387,350,350,1)validation_data:(298,1,350,350)到(298,350,350,1)testing_data:(301,1,350,350)至(301,350,350,1)
我试过了,但是不管用

np.rollaxis(training_data,0,3).shape
np.rollaxis(validation_data,0,3).shape
np.rollaxis(testing_data,0,3).shape

字符串

hxzsmxv2

hxzsmxv21#

你需要像这样的np.transpose方法:

training_data = np.transpose(training_data, (0,2,3,1))

字符串
其他的也可以这样做

wvt8vs2t

wvt8vs2t2#

如果你正在移动的轴的长度为1,一个简单的整形就可以了:

a = np.arange(24).reshape(2, 1, 3, 4)

# Three different methods:
b1 = a.reshape(2, 3, 4, 1)
b2 = np.moveaxis(a, 1, 3)
b3 = a.transpose(0, 2, 3, 1)

# All give the same result:
np.all(b1 == b2) and np.all(b2 == b3)
# True

字符串

ej83mcc0

ej83mcc03#

这样做:

np.rollaxis(array_here,axis_to_roll,to_where)

字符串
对于您的情况,您希望将轴0滚动到最后一个位置(超过3),因此必须将to_where设置为4(超过3)。
这将工作(亲自测试):

np.rollaxis(train_data,0,4)

相关问题