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

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

新規登録して質問してみよう
ただいま回答率
85.35%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

1回答

1145閲覧

numpy配列の表示がおかしい

deidara0301

総合スコア10

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2021/06/27 09:46

自分が作成した機械学習用の入力データが、期待される形状と実際の形状が異なるため質問させていただきました。
以下作成に使用したコードです。

python

1x_train=[] 2for nt in data:#dataは読み込むデータのフォルダの番号を表す 3 X=natsorted(glob.glob("{0}/*".format(fold_path[nt])))#nt番目のフォルダ内のcsvファイルのリストを表す 4 for i in range(0,60,4): 5 data_x=np.loadtxt(X[i],delimiter=',')#フォルダ内のcsvファイルの読み込み 6 x_train.append(data_x) 7x_train=np.array(x_train) 8print(x_train.shape)#形状を表示

指定したフォルダ内のcsvファイルを読み込んでそれをx_trainにappendしています。そして最後に形状を表示させています。
このcsvファイルのデータはすべて(44,128)です。今回8925回繰り返しappendしているので期待される形状は、(8925,44,128)のはずです。しかし実際は(8925,)という形状でした。そこで形状がどのように変化していったのか繰り返しごとに表示させてみました。

python

1for nt in data[1]: 2 X=natsorted(glob.glob("{0}/*".format(fold_path[nt])))#nt番目の楽曲のフォルダ内のcsvファイルのリストを表す 3 for i in range(0,60,4): 4 data_x=np.loadtxt(X[i],delimiter=',') 5 x_train.append(data_x) 6 x_train=np.array(x_train) 7 print(x_test.shape)#形状を毎回表示 8 x_train=list(x_train)

すると以下のような表示がされました。(一部を表示)
(369, 44, 128)
(370, 44, 128)
(371, 44, 128)
(372, 44, 128)
(373, 44, 128)
(374, 44, 128)
(375, 44, 128)
(376,)
(377,)
(378,)
(379,)
375まで期待通りの形状でありましたが、376からおかしくなっています。これは読み込んだデータ自体の問題なのかそれともnumpyの何らかの仕様なのか伺いたいです。
ちなみに、保存した配列の形状自体は(8925,)でしたが、この配列の要素の形状をみるとどれも(44,128)となっていました。
以下に配列の一部を表示します。
array([[ 1.80045 , 1.71321 , 1.32516 , ..., -1.93034 , -1.94134 ,
-1.95083 ],
[ 1.81267 , 2.41201 , 2.46577 , ..., -2.1989 , -2.1989 ,
-2.1989 ],
[ 1.57864 , 2.68165 , 2.88657 , ..., -2.1989 , -2.1989 ,
-2.1989 ],
...,
[ 0.244668, 1.64041 , 1.86744 , ..., -2.1989 , -2.1989 ,
-2.1989 ],
[ 1.16727 , 1.67503 , 1.75318 , ..., -1.24344 , -1.2626 ,
-1.27408 ],
[ 1.66377 , 1.76492 , 1.32972 , ..., -0.803295, -0.822467,
-0.833941]])
array([[ 1.06735 , 1.58928 , 1.62816 , ..., -1.8058 , -1.81798 ,
-1.8247 ],
[ 0.69418 , 1.4327 , 1.58198 , ..., -2.14881 , -2.16095 ,
-2.16769 ],
[-0.568896, 1.33733 , 1.54769 , ..., -2.62086 , -2.62086 ,
-2.62086 ],
...,
[ 0.686249, 1.58705 , 1.74332 , ..., -2.62086 , -2.62086 ,
-2.62086 ],
[ 0.697343, 1.64986 , 1.79185 , ..., -1.83525 , -1.84609 ,
-1.85204 ],
[ 0.456442, 1.57898 , 1.51891 , ..., -1.44076 , -1.4516 ,
-1.45756 ]])]
このarrayが(44,128)になっていました。本来であれば、arrayの表記はつかないと思うので、このような形状になっているのはarrayが付いていることが原因だとは思います。
なにか分かることがあれば教えていただきたいです。よろしくお願いします。

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

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

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

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

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

bsdfan

2021/06/27 12:31

376番目のcsvファイルが怪しそうです。 csvに数値以外のものがはいっていたりしないでしょうか。
deidara0301

2021/06/27 13:22

今調べてみましたが、このcsvファイルだけ何故か形状が(47,128)になっていました。恐らく異なる形状のデータをappendしていたことが原因かと思われます。
guest

回答1

0

自己解決

異なる形状の配列をappendしていることが原因でした。

投稿2021/06/27 14:55

deidara0301

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問