2013-11-04 6 views
5

loadtxtデータ型:numpyの私はこのようになり、データ・セットをロードしようとしています

が終わり
Algeria,73.131000,6406.8166213983,0.1 
Angola,51.093000,5519.1831786593,2 
Argentina,75.901000,15741.0457726686,0.5 
Armenia,74.241000,4748.9285847709,0.1 

など、私は国の名前を必要としない1と2列のみが必要になりますをし、最後の列。基本的には、次元nx1の2つの行列を抽出する必要があります。

array([('', 73.131, 6406.8166213983, 0.1), 
    ('', 51.093, 5519.1831786593, 2.0),` 

代わりの

array(['',73.131,6406.8166213983,0.1], 
     ['',51.093, 5519.1831786593, 2.0], 

どこに間違いがある、しかし

data=np.loadtxt('file.txt',delimiter=',',dtype=[('f0',str),('f1',float),('f2',float),('f3',float)]) 

、これはタプルのリストを生成します。私は、データ型を指定する必要があることを知っていますか?

+0

FWIW、あなたの出力は、タプルのリストが、[構造の配列ではありません](http://docs.scipy.org/doc/numpy/user/basics.rec.html)。各行の先頭に空文字列を入れておきたい出力は、dtypeが混在しているのでオプションではありません。行( '1,2)'のみを使用すると、両方とも浮動小数点なので、この問題は無関係になります。 – askewchan

答えて

1

あなたはちょうどあなたがgenfromtxt使用できる最初の2列にしたい場合:一緒に

import numpy as np 
col1 = np.genfromtxt('yourfile.txt',usecols=(1),delimiter=',',dtype=None) 
col2 = np.genfromtxt('yourfile.txt',usecols=(2),delimiter=',',dtype=None) 

または両方を:

np.genfromtxt('yourfile.txt',usecols=(1,2),delimiter=',',dtype=None) 
0

"間違い"は、あなた自身のdtypeを設定することです。設定したdtypeが必要でない場合は、np.loadtxt()のskiprowsとusecolsパラメータを使用して、必要な列だけをロードすることができます。

あなたの結果は、(n、2)の形をしたNumPy配列で、あなたが持っていると思った(nはあなたの行数です)。

10

NumPy'sを参照してください。

x, y = np.loadtxt(c, delimiter=',', usecols=(1, 2), unpack=True) 

パラメータusecolsは、あなたの仕事を完了させるはずです。

+0

これは最善の答えですが、OPの要求に一致するためには 'usecols =(1,2)'となります。 – askewchan

関連する問題