内容
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個あります。
結果
分割して変換をすることはできたのですが、できれば一発で変換したいのでできない原因を教えていただいたら幸いです。
個人的にはメモリが関係しているのではないかと思っています。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。