多次元配列におけるnumpyのappendの使用方法について
四次元の配列があります。
python
1yozigen.shape
(10, 20, 30, 1000)
解釈としては10×20×30の三次元の配列が1000個ある感じです。
よって、解釈をより簡単にするために
python
1yozigen[0]
が一枚目の画像を表すようにするために
python
1yozigen.shape
(1000,10, 20, 30)
という出力になってくれることを望みます。
方法としては以下の方法を思いつきました。
python
1yozigen1 = [] 2for i in range(1000): 3 yozigen1.append(yozigen[:,:,:,i]) 4yozigen1 = np.array(yozigen1)
試してはいないですができると思います。
しかしながらこの方法では一回listにしていることによって計算の速度を著しく落としていて
なおかつnumpy⇒list⇒numpyの配列にしているので非常に醜いです。
そこでnp.appendなるものを発見したので使用してみました。
python
1yogzigen1 = np.array([], int) 2for i in range(1000): 3 yozigen1 = np.append(yozigen1,yozigen[:,:,:,i]) 4yozigen1.shape
(6000000,)
となってしまいこれは一次元配列に直してappendしていることが分かりました。
そこで、axisを引数にとることは分かったのですがその後が解釈できません。
axisを指定するときは
python
1yogzigen1 = np.array([], int)
最初はこのような置き方はしてはいけないようですし、
axis=0は行に挿入,
axis=1は列に挿入,
という説明が以下のサイトにされていたのですが、
NumPy配列ndarrayに要素・行・列を挿入、追加するinsertの使い方
そもそも多次元なので、行と列しかない配列とは違うという二点より多次元配列におけるnumpyのappendの使い方が分かりません。
教えていただけると恐縮です。
また
python
1yozigen1 = [] 2for i in range(1000): 3 yozigen1.append(yozigen[:,:,:,i]) 4yozigen1 = np.array(yozigen1)
上記と同じ変換をnp.reshapeで行うことは可能でしょうか?
長くなってしまいましたが、わかる方がいれば教えていただけると恐縮です。
宜しくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/06 12:21