排除在numpy.genfromtxt()

2024-04-26 07:03:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须以numpy数组的形式导入大的逗号分隔表。因此,我使用genfromtxt来实现这一点。但是,我遇到了那些表中包含了“foo,bar”形式的元素,我甚至不需要它。 在import期间,numpy会引发一个错误,即列数不一致,因为它将这些元素识别为两个独立的条目。在不知道这些条目位于何处的情况下,如何避免这种情况呢。如果这不可能,有没有一种方法可以显式地从导入中排除某些列,它可能包含这些值?我知道乌塞科尔斯,但我想要的恰恰相反。而且,usecols可能也会错误地计算列的数量,因此排除不会以这种方式工作。在


Tags: 方法importnumpy元素数量foo错误bar
1条回答
网友
1楼 · 发布于 2024-04-26 07:03:29

“invalid_raise”参数可能有助于:

invalid_raise : bool, optional
    If True, an exception is raised if an inconsistency is detected in the
    number of columns.
    If False, a warning is emitted and the offending lines are skipped.

使用False至少应该加载文件。在

但是,如果您仍然需要使用有问题的行,则需要其他方法。在

如果所有的数据字段都排成一行,delimited的列宽版本可能可以工作。在


genfromtxt接受一个生成器作为输入,也就是说,一个可以一次为它提供一行的函数。在

使用re函数清理输入源中的(foo,bar)字符串的示例:

^{pr2}$

产生:

array([('foo', 2, 3), ('(foo:bar)', 5, 6), ('bar', 8, 9)], 
  dtype=[('f0', 'S9'), ('f1', '<i4'), ('f2', '<i4')])

或者从文件中

with open('stack27383639.txt') as f:
    F=np.genfromtxt((foo(l) for l in f),dtype=None,names=True)

相关问题 更多 >