【问题标题】:How to control genfromtxt to read rows specified?如何控制 genfromtxt 读取指定的行?
【发布时间】:2014-11-13 13:01:23
【问题描述】:

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

【问题讨论】:

  • fromfile 提供关键字count 可以控制要阅读的项目数。然而fromfile在读取txt文件时不如genfromtxtloadtxt灵活。

标签: numpy scipy genfromtxt


【解决方案1】:

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

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

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

【讨论】:

  • 如果你想过滤那个警告,你可以添加这个,import warningswarnings.simplefilter("ignore",UserWarning)
猜你喜欢
  • 2014-05-28
  • 1970-01-01
  • 2017-03-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2015-03-13
相关资源
最近更新 更多