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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

多次元配列

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

NumPy

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

Python

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

Q&A

3回答

6832閲覧

Pythonでlistからnumpyに変換できない

Tensho

総合スコア12

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

多次元配列

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

NumPy

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

Python

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

0グッド

0クリップ

投稿2019/12/11 07:15

内容

16799*93のcsvデータをlistに入れてからnumpyに変換したいと思っていて
前まではtrainData = np.array(trainData, dtype='float64')で変換できていたのですが、
同じサイズでデータの形式を少し変えて同じことをやった結果
setting an array element with a sequence.が出て変換ができませんでした。
前のデータと新しいデータでの違いは新しいほうが負の数があるというだけで、他は何も変わりません。

環境

Python 3.6.9
Google Colab上で動かしてます。

試したこと

trainData = np.array(trainData, dtype='float64')dtype='float64を無くしたら変換ができたので、中身のタイプを見てみると、

python

1print(type(trainData)) 2print(type(trainData[0]))
<class 'numpy.ndarray'> <class 'list'>

となり、外側はnumpy配列で中身がlistのままになってしまいます。

中身がlistになるのを防ぐためにtrainData = np.array([np.array(i, dtype='float16') for i in trainData])で変換したところ

<class 'numpy.ndarray'> <class 'numpy.ndarray'>

タイプはしっかりとnumpy配列になっているのですが、
trainData.shapeをしても結果が(16799,)になり、中身のほうの要素数が表示されません
trainDataよりもデータ数が少ないtestDataの配列(4221*92)ではなんの問題もなく変換されます。

python

1print(type(testData)) 2print(type(testData[0])) 3print(testData.shape)
<class 'numpy.ndarray'> <class 'numpy.ndarray'> (4221, 92)

trainDataのtestDataの中身のデータは多少のずれはありますが、ほぼ同じデータ構造です。

データの見本

'0.3263637102277253', '0.010287768494906022', '0.1293394133795179', '-0.5175783625941922', '-0.01039598923690995', '-0.42439811440649905', '-0.33100281289208394', '-0.01555237483226286'

このようなデータが横に92個あり、それが約17000個あります。

結果

分割して変換をすることはできたのですが、できれば一発で変換したいのでできない原因を教えていただいたら幸いです。
個人的にはメモリが関係しているのではないかと思っています。
よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

trainData = np.stack([np.array(i, dtype='float16') for i in trainData])

で解決できると思います。

投稿2019/12/12 12:34

tetsu316

総合スコア41

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

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

0

numpyでcsvファイルを直に読み込んではどうでしょうか?

python

1numpy.loadtxt()

投稿2019/12/11 12:31

meg_

総合スコア10579

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

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

0

子リストの長さは完全に一致する必要があります。2次元以上の場合は、「四角く」ならないデータはnumpy配列に変換できません。

投稿2019/12/11 07:23

hayataka2049

総合スコア30933

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

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

Tensho

2019/12/11 07:34 編集

子リストの長さはすべて92で一致しているので、四角いデータになっているはずなんですよね、、、 csvでデータの個数を確認したところ、1,545,508個で16799*92の値と同じになっているため、抜けはないはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問