2

numpyのrecfromcsvは、データの最初の行をスキップします。(genfromtxtについても同じです)

import numpy as np

filename = 'data.csv'
writer = open(filename,mode='w')
writer.write('0,1.1,1.2\n1,2.1,2.2\n2,3.1,3.2')
writer.close()

data = np.recfromcsv(filename)
print data

これはバグですか、それとも最初の行を失うことなくデータをロードするにはどうすればよいですか?

4

3 に答える 3

5

skiprow=0recfromcsv が最初の行をスキップしないように追加できます。

于 2012-12-07T21:41:51.060 に答える
4

csvファイルのデフォルトの最初の行には、フィールド名が含まれています。この関数は、デフォルトでパラメーターを使用してrecfromcsv呼び出します。これは、データの最初の行をヘッダーとして読み取ることを意味します。genfromtxtnames=True

定義: http: //docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

配列の前に書き込む必要があります。

import numpy as np

filename = 'data.csv'
writer = open(filename,mode='w')
writer.write('first column,second column,third column\n')
writer.write('0,1.1,1.2\n1,2.1,2.2\n2,3.1,3.2')
writer.close()

data = np.recfromcsv(filename)
print data

または、recfromtxtの代わりに使用しrecfromcsvます。

または、デフォルト名を次のように上書きします

recfromcsv(filename, names=['a','a','a'])
于 2012-10-15T07:40:52.167 に答える
2

のデフォルトの動作はrecfromcsvヘッダー行を読み取ることです。これが最初の行をスキップする理由です。それはgenfromtxt(私が合格した場合delimiter=',')で私のために働きます。genfromtxtどのように失敗するかを示す出力を提供できますか?

残念ながら、Numpy には dtype を指定できないバグがあるようですrecfromcsv( https://github.com/numpy/numpy/issues/311を参照)。これは、ヘッダー行を読み取らないようにするために必要なことだと思います。しかし、でデータを読み取ることができますgenfromtxt

編集:名前のリストを渡すだけで読み取ることができるようです:

np.recfromcsv(filename, delimiter=',', names=['a', 'b', 'c'])

(それがうまくいかなかった理由は、私がやったことがfrom __future__ import unicode_literalsあり、明らかにdtypeのユニコードが好きではありません。)

于 2012-10-15T07:39:41.430 に答える