質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1304閲覧

np.array(3,2000)から(3,21)ごとのarrayデータ毎にfor or while文で取り出していく方法。

yohehe

総合スコア48

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/06/28 11:42

編集2018/06/28 14:07

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)という書き方以外があるのか。
すみませんが教えていただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1import numpy as np 2 3arr=np.arange(6000).reshape(3,2000) 4data=[] 5span=21 # 長さの調整 6for i in range(2000//span): 7 temp = np.array([arr[0][i*span:(i+1)*span],arr[1][i*span:(i+1)*span],arr[2][i*span:(i+1)*span]]) 8 data.append(temp) 9print(data[0])

冗長な感ありますが、こんな感じでどうでしょうか?

投稿2018/06/28 15:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohehe

2018/06/28 16:25

animal様、ありがとうございます。この方法であれば、numpyの列の長さを気にせずに行列ごとに分けていけます!!取得したデータが分ける際に割り切れない場合について悩んでおりましたので、本当に助かりました。
退会済みユーザー

退会済みユーザー

2018/06/28 16:45

がんばって、よかったです^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問