2016-05-24 8 views
0

csvファイルからnumpy配列を作成したいとします。データはカンマ区切りですが、次のようになります。日付を列名として読み込むNumpy genfromtxt

seqid 9/19/2009 9/26/2009 10/3/2009 
4315  228046  227475  239080 
19866  22241  27211  25313 
23436  23576  23678  24687 
23593  58074  61569  58564 
23609  334673  313980  246823 

私は現在、私は、コードを使用しています、これらの日付としての私の列名を維持したいと思います:

mcvs = np.genfromtxt('csvfile.csv', delimiter=',', dtype=None, names=True) 

私はnames=Trueを使用する場合は、私が取得します1 voidの1列目のアレイバック。

私はここで何が欠けていますか?

答えて

0

サンプル上で(区切り文字として空白を使用して)操作すると、4つのフィールドを持つ1次元構造化配列が得られます。フィールド名は、/文字を取り除いた日付です。

In [245]: np.genfromtxt(txt,dtype=None,names=True) 
Out[245]: 
array([(4315, 228046, 227475, 239080), (19866, 22241, 27211, 25313), 
     (23436, 23576, 23678, 24687), (23593, 58074, 61569, 58564), 
     (23609, 334673, 313980, 246823)], 
     dtype=[('seqid', '<i4'), ('9192009', '<i4'), ('9262009', '<i4'), ('1032009', '<i4')]) 

「列/フィールド」は、フィールド名によってアクセスされています

In [252]: data['9192009'] 
Out[252]: array([228046, 22241, 23576, 58074, 334673]) 

(私はビットで取り外した文字を見てみましょう)

typeは、有用なテストではありません構造化アレイ要素。 dtype使用します

In [250]: np.genfromtxt(txt,dtype=None,names=True,deletechars='') 
Out[250]: 
array([(4315, 228046, 227475, 239080), (19866, 22241, 27211, 25313), 
     (23436, 23576, 23678, 24687), (23593, 58074, 61569, 58564), 
     (23609, 334673, 313980, 246823)], 
     dtype=[('seqid', '<i4'), ('9/19/2009', '<i4'), ('9/26/2009', '<i4'), ('10/3/2009', '<i4')]) 

In [247]: type(data[0]) 
Out[247]: numpy.void 

In [248]: data.dtype 
Out[248]: dtype([('seqid', '<i4'), ('9192009', '<i4'), ('9262009', '<i4'), ('1032009', '<i4')]) 

deletecharsパラメータは、私は/が削除されているかどうかを制御できます

関連する問題