np.arrayで(3,2000)のデータからnp.array(3,21)毎のarrayデータに取り出していくfor文の作り方がわからず困っています。
np.arrayのshapeが(3,2013)の場合で20で割り切れない場合には(3,20)ごとにわける場合while文が正しいでしょうか。
python
1# array(3,2000),取り出す値を(3,20)とすると 2arr=np.arange(6000).reshape(3,2000) 3data=[] 4#取り出せる数を除算で出す。 5n=2000//20 6for i in range(0,n,20): 7 tempdata=arr[:,i:i+20] 8 data.append(tempdata) 9data=np.array(data) 10print(data.shape) 11#(5, 3, 20)と出力されてしまう。 12 13#以下追記 新しい方法を考えて試してみました。 14data=[] 15while True: 16 a=arr 17 temp_data=a[:,1:21] 18 data.append(temp_data) 19 new_a=np.delete(a,[range(21)],axis=1) 20 a=new_a 21 if a.shape[1]<21: 22 break 23#取り出しては行列を削除していく。21個ごとを取り出してdataに格納。aの列が21個以下になったらプログラムを停止。 24#上の方法をやるとループしてしまっているみたいです。
np.hsplitの方法も考えたのですが、列数が割りきれない場合にはsplitできない。ので他の方法を考えております。
a,b,c,d,.....=np.split(arr)という書き方以外があるのか。
すみませんが教えていただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/28 16:25
退会済みユーザー
2018/06/28 16:45