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
这是一个错误,或者如何在不丢失第一行的情况下加载数据?
答案 0 :(得分:4)
您可以添加skiprow=0
以防止recfromcsv跳过第一行。
答案 1 :(得分:3)
csv文件的默认第一行包含字段名称。
函数recfromcsv
调用genfromtxt
作为默认参数names=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'])
答案 2 :(得分:1)
recfromcsv
的默认行为是读取标题行,这就是它跳过第一行的原因。它适用于genfromtxt
(如果我通过delimiter=','
)。你能提供显示genfromtxt
失败的输出吗?
不幸的是,似乎Numpy中存在一个错误,它不允许您在recfromcsv
中指定dtype(请参阅https://github.com/numpy/numpy/issues/311),因此我无法看到如何使用指定的列读取它名称,我认为这是你需要做的,以避免阅读标题行。但您可以使用genfromtxt
。
编辑:看起来你可以通过传递名单列表来阅读它:
np.recfromcsv(filename, delimiter=',', names=['a', 'b', 'c'])
(它不适合我的原因是我做过from __future__ import unicode_literals
并且显然不喜欢dtypes中的unicode。)