2012-02-16 20 views
-2

私は、数字のk個の列(各列の要素の数が同じ)を持つファイルを持っています。個別のnumpy.arrayで各列の数値を読み取って数値を保存する最も速い方法は何ですか?Pythonで書式設定されたファイルから数値を読み込みます

+0

こんにちはボブ、この宿題はありますか?もしそれがあなたのようにタグ付けしていただけますか?また、あなたが自分自身をどれだけ試したかを理解するのに役立つソースコードがありますか?あなたが読もうとしているファイルのサンプルを見せてもらえますか? – blahman

答えて

3

genfromtxtを試してみてください。

これは、好きな場合、またはrecarrayに読み込んだ場合でも、列名を指定できるという利点があります。

私はファイル 'tmp' の作っ:numpyのから次に

1 2 3 4 5 
6 7 8 9 10 
11 12 13 14 15 

を:

import numpy as np 
data = np.genfromtxt('tmp') 
#array([[ 1., 2., 3., 4., 5.], 
#  [ 6., 7., 8., 9., 10.], 
#  [ 11., 12., 13., 14., 15.]]) 

をあなたはhelp(np.genfromtxt)を見れば、カスタムdtype秒を指定するなど、さまざまなオプションがあります表示されます(そう必要に応じて再作成できます)、欠損値のオプションの設定、列名の読み込みなどがあります。

+0

列の数を知っていると仮定して列を別々の変数に格納することは可能でしょうか? – Bob

2
>>> import numpy as np 
>>> a = np.loadtxt('yourfile.txt') 
>>> print a 
[[ 1. 2. 3. 4. 5.] 
[ 6. 7. 8. 9. 10.] 
[ 11. 12. 13. 14. 15.]] 
>>> columns = dict(enumerate(a.T)) 
>>> columns[0] 
array([ 1., 6., 11.]) 
>>> columns[1] 
array([ 2., 7., 12.]) 
+0

注意してください。numpy配列は行ごとに繰り返し可能であるため、単に 'columns = a.T'を使うこともできます。 – wim

0

open()はファイルオブジェクトを返し、最も一般的にはopen(filename、mode)の2つの引数で使用されます。

F

開放F =( '/ TMP /作業ファイル'、 'W') 印刷最初の引数は、ファイル名を含む文字列です。 2番目の引数は、ファイルの使用方法を説明するいくつかの文字を含む別の文字列です。 modeは、ファイルが読み込まれるだけの場合は 'r'、書き込みのみの場合は 'w'(同じ名前の既存のファイルが消去されます)、 'a'が追加のためにファイルを開きます。ファイルに書き込まれたデータは自動的に最後に追加されます。 'r +'は読み書きのためにファイルを開きます。 mode引数はオプションです。 'r'が省略されていると仮定します。

Windowsでは、モードに追加された 'b'はファイルをバイナリモードで開きます。したがって、 'rb'、 'wb'、 'r + b'のようなモードもあります。 Windows上のPythonでは、テキストファイルとバイナリファイルが区別されます。テキストファイルの行末の文字は、データの読み書き時に自動的に少し変更されます。ファイルデータのこのような舞台裏の変更は、ASCIIテキストファイルでは問題ありませんが、JPEGやEXEファイルのようなバイナリデータが破損します。このようなファイルを読み書きするときは、バイナリモードを使用するように十分注意してください。 Unixでは、モードに 'b'を付けることを害しません。したがって、それをすべてのバイナリファイルに対して独立して使用することができます。

関連する問題