============== データの読み込み ============== .. toctree:: :maxdepth: 1  csv形式で記録されているファイルからデータを読み込む. 以下のような内容のsample_data.csvという名前を持ったファイルがあるとしよう.このの中身を読み込む. csv形式では,データとデータの間が「,」で区切られている.(ファイルは,エクセルやメモ帳を使って準備してください)   :: #sample data 2014/6/26 -15,170 -13,172 -12,115 -10,120 -9,81 -7,52 -6,30 -4,18 -2,6 0,0 1,1 2,6 3,15 5,24 6,40 9,78 10,105 12,143 13,170 17,250 20,380 csv形式のファイルの中身を読み込んで,二つの配列に内容をコピーするプログラムである. .. code-block:: python :linenos: import numpy as np file_id = 'sample_data.csv' file_path = '/Users/kentaro/work_space/python/' #file_path = './' rfile = file_path + file_id data = np.loadtxt(rfile, comments='#' ,delimiter=',') print(data.shape) x_csv = data[:,0] y_csv = data[:,1] print(x_csv) print(y_csv) 実行結果は以下の通り,sample_data.csv内の情報を読み込んで,印字できている. :: (21, 2) [-15. -13. -12. -10. -9. -7. -6. -4. -2. 0. 1. 2. 3. 5. 6. 9. 10. 12. 13. 17. 20.] [ 170. 172. 115. 120. 81. 52. 30. 18. 6. 0. 1. 6. 15. 24. 40. 78. 105. 143. 170. 250. 380.] 1行目:モジュールnumpyの取り込み.npと呼ぶことにする. 3,4行目:ファイル名をfile_idという変数に,ファイルの置き場所をfile_pathという変数に書く. 7行目:rfileという変数に,置き場所とファイル名を繋げた内容を書く. 9行目:numpyのloadtxtという命令でファイルの中身を読み込む. loadtxtの最初の引数には,ファイル名をかく.ここでは7行目で用意したrfileとする. 「comments='#'」は,先頭に「#」がついた行はコメント行とみなして無視し,読み込まない. ファイルの1行目にある「#sample data 2014/6/26」の行が無視される. 「delimiter=','」は,データ間が「,」で区切られていることを指示している. 10行目:配列であるdataの大きさを.shpaeで調べて,印字している.ここでは,21行2列という結果である. 12,13行目:data[:,0]は,配列dataの1列目(0番列)の要素全てという意味である. 「:」の左と右に番号を書けば,操作の対象とする要素を指定できる.例えば,「0:5」と書き換えれば0番から5番までの要素が指定される. 指定した範囲の要素(ここでは全て)を新しい配列x_csvに格納している. 15,16行目:読み込んだ配列の印字. .. note:: もしも上記のプログラムを実行して,「No such file or directory: './sample_data.csv'」のようなエラーが出たら, (ファイル名などを間違えていないならば)PATHが通っていない可能性がある.PATH&Pythonなどをキーワードに検索をしてみよう. 環境変数辺りをいじる必要があるかもしれない.私の環境(Mac+Canopy)でも,なぜかエラーが出たので, 上記のコードでは 4行目でファイルのおいてある場所を明示的に書いた.PATHがちゃんと通っていたら, 5行目のような書き方や,あるいは何も指定しないでもよいはず.