如何控制genfromtxt读取指定的行?

时间:2014-09-19 02:16:08

标签: numpy scipy genfromtxt

genfromtxt可以跳过页眉和页脚行,并指定要使用的列。 但是如何控制要读取的行数?

有时,txt文件可能包含多个具有不同形状的块。 例如,

a=StringIO('''
1,2,3
1,2,3
2,3
2,3
''')
genfromtxt(a,delimiter=',',skip_header=1)

这会引发错误,

ValueError: Some errors were detected !
    Line #4 (got 2 columns instead of 3)
    Line #5 (got 2 columns instead of 3)

当然,我可以这样做:

a=StringIO('''
1,2,3
1,2,3
2,3
2,3
''')
genfromtxt(a,delimiter=',',skip_header=1,skip_footer=2)

因为我必须计算块下的行数,所以很难看。

但是我希望像

这样的东西
genfromtxt(a,delimiter=',',skip_header=1,nrows=2)

会更清楚。

任何人都对此有好感吗?还是使用其他功能?


2015年10月更新

此问题在新版Numpy中已经已解决

genfromtxt现在有一个名为max_rows的新关键字,允许用户控制要读取的行数,参见here

1 个答案:

答案 0 :(得分:2)

您可以使用invalid_raise = False跳过读取缺少某些数据的行。 E.g。

b = np.genfromtxt(a, delimiter=',', invalid_raise=False)

这会给你一个警告,但不会引发异常。