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

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

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

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

Q&A

解決済

1回答

3290閲覧

どんどん行列を追加していって、一つのマトリックスにまとめたい

Chirnil

総合スコア15

Python

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

0グッド

1クリップ

投稿2019/01/06 16:09

編集2019/01/06 16:13

KerasでDeepLearningをするためのデータを自作しています。

FFTで周波数を出した後に、出てくる周波数は異なるサイズの行列です。(サンプル数、周波数)となっています。
行のサイズは全部同じですが、列の数(サンプル数)が違います。
例えば、
(7,8000)
(35,8000)
(2,8000)
...
という感じに出てくる行列を一つのマトリックス(全サンプル数、8000)にまとめたいのです。

該当のソースコード

teach_matrix0, teach_answer0 = cut_wash.cut_wav('7draining',3)
teach_matrix1, teach_answer1 = cut_wash.cut_wav('16spin_full',5)
teach_matrix2, teach_answer2 = cut_wash.cut_wav('2-1water_in',2)
teach_matrix3, teach_answer3 = cut_wash.cut_wav('3washing',1)
...

teach_matrixA=np.vstack((teach_matrix0,teach_matrix1))
teach_matrixB=np.vstack((teach_matrixA,teach_matrix2))
teach_matrixC=np.vstack((teach_matrixB,teach_matrix3))
...

teach_answerA=np.vstack((teach_answer0,teach_answer1))
teach_answerB=np.vstack((teach_answerA,teach_answer2))
teach_answerC=np.vstack((teach_answerB,teach_answer3))
...

こういう感じで、vstackしていたのですが、どんどん量が多くなってきたので、
vstackのところをfor loopとかなにかできないかと探してみたのですが、見つかりませんでした。
Python初心者です。どうぞよろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

tiitoi

2019/01/06 16:53

> 行のサイズは全部同じですが、列の数(サンプル数)が違います。 二次元配列の場合、(行、列) なので、その例だと同じなので行ではなく、列数ではないですか?
Chirnil

2019/01/06 17:01

そうでした! 失礼しました。m(__)m 行のサイズが違うということです。
guest

回答1

0

ベストアンサー

vstack は複数の配列をリストで渡すと axis=0 方向にまとめて結合できます。

import numpy as np a = np.random.randn(5, 10) b = np.random.randn(7, 10) c = np.random.randn(9, 10) ret = np.vstack([a, b, c]) print(ret.shape) # (21, 10)

これを利用して次のようにリストに行列を append していき、最後に vstack して ndarray にすればよいと思います。
ループで回せるように cut_wav() の引数を変数にしてください。(これらの引数がどのように決めているかわからなかったので、以下は適当です)

names = ['7draining', '16spin_full', '2-1water_in', '3washing'] vals = [3, 5, 2, 1] mat_list = [] ans_list = [] for name, val in zip(names, vals): mat, ans = cut_wash.cut_wav(name, val) mat_list.append(mat) ans_list.append(ans) mat_list = np.vstack(mat_list) ans_list = np.vstack(ans_list)

投稿2019/01/06 17:10

編集2019/01/06 17:11
tiitoi

総合スコア21956

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

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

Chirnil

2019/01/06 18:29

できましたーーー!! ありがとうございました。本当に助かりました。大感激です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問