2011-12-24 8 views
2

this pageで入手可能なデータセットをPythonで読む必要があります。stringtとfloatを含むファイルをloadtxtで読む

各列のデータ型の定義方法は非常に正確です。 このデータセットを読み込むには、どうすればloadtxt(numpy関数)を使用できますか?私はdtypeオプションでデータ型を与えようとしましたが、うまくいきませんでした。

+0

申し訳ありませんが、このURLから何を読みたいのか分かりにくいです - 正確なURL(URLがデータセットを含むフレームを指しています)を教えてください。そうでなければ、そこのリンクから必要なデータセットを記述してください? – jsbueno

答えて

3

あなたがリンクしているサイトの表は、お互いに非常に異なっており、異なる列に異なる種類があります。

テーブルごとにrecord typeを定義する必要があります。
レコード型を使用すると、文字列、整数、浮動小数点型を同じ配列に宣言できます。それは、この例のように定義して使用されます。

>>> recordtype = dtype([('name', str_, 20), ('age', int32), ('weight', float32)]) 
>>> people = array([('Joaquin', 51, 60.0), ('Cat', 18, 8.6)], dtype=recordtype) 
>>> people 
array([('Joaquin', 51, 60.0), ('Cat', 18, 8.600000381469727)], dtype=[('name', '<U20'), ('age', '<i4'), ('weight', '<f4')]) 

一方あなたはそれ上のデータの一貫性を破るなど'...'等のコンテンツを持つ行を持っています。したがって、ファイルから直接読み込む必要がある場合は、loadtxtコンバーターパラメーターにconverter関数を使用する必要があります。

また、loadtextはジェネレータも入力として受け入れるので、ジェネレータの行を処理して、クリーンな行でloadtextを供給することができます。

は、あなただけの文字列の列を含むファイルから山車をしたい場合は最後に、あなたはまた、表の見出し

0

を排除するためのskipRowsパラメータを設定する必要がありますが、そうでない場合も形成され、便利なソリューションは、

のようなものを使用することです
load = numpy.loadtxt('file.dat', usecols=(2,3,7)) 

ここで、列2,3および7はそれぞれ浮動小数点を持ち、それぞれload[:,0],load[:,1]およびload[:,2]になります。