(32,32,3) を、
画像を崩さないように
(3,32,32) このshapeに変換する
最もスマートな方法を教えてください。
numpyを使ってるなら swapaxes 関数ですかね?
https://numpy.org/doc/stable/reference/generated/numpy.swapaxes....
(A,B,C)を(C,A,B)に変換するなら
swapaxesで(A,B,C)のAとBを入れ替えて (B,A,C)
さらに(B,A,C)のBとCを swapaxesで入れ替えると(C,A,B)になります
この処理はnumpyのコードでは
img.swapaxes(0,1).swapaxes(0,2)
と一行で書けます.(A,B,C)のAとBを入れ替えるのが .swapaxes(0,1)
(B,A,C)のBとCを入れ替えるのが.swapaxes(0,2)です
実際のコードの例です
import numpy as np # red, green, blueの画素 R=[255,0,0] G=[0,255,0] B=[0,0,255] # とりあえず (4,5,3) の画像 img を作る img = np.array([ [G,R,B,R], [B,R,B,R], [B,R,B,R], [B,R,G,R], [B,R,G,R], ]) print(img) # (3,4,5)に変換した画像 img2 を作る img2 = img.swapaxes(0,1).swapaxes(0,2) print(img2)
画像が崩れてないかは print(img)とprint(img2)の結果を見比べて確認してください