あなたが読んだ後nan
で列を除外できました。
In [52]: txt=b'antelope,1,0,0,1,0,0,0,1,1,1,0,0,4,1,0,1,1'
In [53]: txt=[txt,txt]
In [54]: A=np.genfromtxt(txt, dtype=float, names=None,delimiter=',')
In [55]: A
Out[55]:
array([[ nan, 1., 0., 0., 1., 0., 0., 0., 1., 1., 1.,
0., 0., 4., 1., 0., 1., 1.],
[ nan, 1., 0., 0., 1., 0., 0., 0., 1., 1., 1.,
0., 0., 4., 1., 0., 1., 1.]])
カラムはすべての行でnan
です。またはnan
の列には.any
を使用できます。他のテストも可能です。
In [56]: ind=np.isnan(A).all(axis=0)
In [57]: ind
Out[57]:
array([ True, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False], dtype=bool)
In [58]: A[:,~ind]
Out[58]:
array([[ 1., 0., 0., 1., 0., 0., 0., 1., 1., 1., 0., 0., 4.,
1., 0., 1., 1.],
[ 1., 0., 0., 1., 0., 0., 0., 1., 1., 1., 0., 0., 4.,
1., 0., 1., 1.]])
もう一つのアイデアは、genfromtxt
は、各列のDTYPEを選択させる、dtype=None
で一度ファイルを読むことです。結果として得られる化合物のdtypeは、目的のタイプの列を見つけるためにフィルタリングすることができます。
In [118]: A=np.genfromtxt(txt, dtype=None, names=None,delimiter=',')
In [119]: ind=[i for i, d in enumerate(A.dtype.descr) if d[1]=='<i4']
In [120]: A=np.genfromtxt(txt, dtype=None, names=None,delimiter=',',usecols=ind)
In [121]: A
Out[121]:
array([[1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 4, 1, 0, 1, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 4, 1, 0, 1, 1]])
DTYPEも単一DTYPE(INT)を有する2Dアレイには、この構造化されたアレイを統合するが正しいタイプ
In [128]: A=np.genfromtxt(txt, dtype=None, names=None,delimiter=',')
In [129]: ind=[d[0] for d in A.dtype.descr if d[1]=='<i4']
In [130]: A[ind]
Out[130]:
array([(1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 4, 1, 0, 1, 1),
(1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 4, 1, 0, 1, 1)],
dtype=[('f1', '<i4'), ('f2', '<i4'), ('f3', '<i4'), ('f4', '<i4'), ('f5', '<i4'), ('f6', '<i4'), ('f7', '<i4'), ('f8', '<i4'), ('f9', '<i4'), ('f10', '<i4'), ('f11', '<i4'), ('f12', '<i4'), ('f13', '<i4'), ('f14', '<i4'), ('f15', '<i4'), ('f16', '<i4'), ('f17', '<i4')])
ある列名を収集するために濾過することができる、のビットで痛み(私は必要に応じて詳細に入ることができます)。
あなたは 'genfromtxt'を使う特別な理由はありますか?これは、[pandas](http://pandas.pydata.org/)のDataFrameを使ったかなり簡単な使用例です。 –
いいえ私は図書館に囲まれていません。あなたはパンダでどうやってやりますか? – lzc