6

答えが簡単に説明できるような問題があります。配列要素を浮動小数点数に変換するのに苦労しています(乗算、加算などを行うことができるようにするため)

import csv
import os
import glob
import numpy as np

def get_data(filename):
    with open(filename, 'r') as f:
        reader = csv.reader(f)                      
        return list(reader)

all_data = []

path=raw_input('What is the directory?')       
for infile in glob.glob(os.path.join(path, '*.csv')):
     all_data.extend(get_data(infile))
a = np.array(all_data)
current_track_data=a[0:,[8,9,10,11,12]]
abs_track_data=a[0:,7]

エラーが表示されます:

> --------------------------------------------------------------------------- ValueError                                Traceback (most recent call last) C:\Users\AClayton\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.0.3.1262.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
    174             else:
    175                 filename = fname
--> 176             exec compile(scripttext, filename, 'exec') in glob, loc
    177     else:
    178         def execfile(fname, *where):
> 
> C:\Users\AClayton\Current\python begin\code_tester2.py in <module>()
>      18 for infile in glob.glob(os.path.join(path, '*.csv')): # performs loop for each file in the specified path with extension .csv
>      19      all_data.extend(get_data(infile))
> ---> 20      a = np.ndarray(all_data, dtype=float)
>      21 
>      22      current_track_data=a[0:,[8,9,10,11,12]]
> 
> ValueError: sequence too large; must be smaller than 32
4

1 に答える 1

14

あなたのスクリプトは、投稿したコードと同じではありません...エラーのトレースバックが示すように、20行目でnp.ndarray. これは、ファクトリ関数ではなく、numpy 配列オブジェクトです。自分が何をしているのかよくわかっていない限り、ドキュメントのアドバイスに従い、次のことを行います。np.array

配列はarrayzerosまたはを使用して作成する必要がありますempty(以下の「関連項目」セクションを参照してください)。ここで指定されたパラメータはndarray(...)、配列をインスタンス化するための低レベル メソッド ( ) を参照しています。

したがって、行番号 20 を次のように変更します。

 a = np.array(all_data, dtype=float)

そしてあなたは大丈夫なはずです。

ndarray最初の入力を作成する配列の形状として受け取るため、エラーが発生します。私の Windows システムでは、32 に設定されたディメンションの数にハードコーディングされた制限があります (プラットフォームに依存する可能性がありますが、不明です)。リストall_dataに 32 を超えるエントリ (またはシステム内のその値が何であれ) があり、ディメンションのサイズとして誤って解釈され、それがエラーの原因となっています。

于 2013-08-16T15:12:16.610 に答える