上一主题

numpy.savetxt

下一主题

numpy.fromregex

numpy.genfromtxt

numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None)[source]

从文本文件加载数据,缺少值按指定处理。

第一个skip_header行之后的每一行在分隔符字符处分割,且注释字符后面的字符将被丢弃。

参数:

fname:file,str,str,generator的列表

要读取的文件,文件名,列表或生成器。如果文件扩展名为gzbz2,则首先解压缩文件。注意,生成器必须在Python 3k中返回字节字符串。列表中的字符串或生成器生成的字符串被视为行。

dtype:dtype,可选

生成的数组的数据类型。如果为None,那么dtype将由每列的内容单独确定。

注释:str,可选

用于指示注释开始的字符。在注释后的一行上出现的所有字符都将被丢弃

分隔符:str,int或sequence,可选

用于分隔值的字符串。默认情况下,任何连续的空格作为分隔符。整数或整数序列也可以被提供为每个字段的宽度。

skiprows:int,可选

已在numpy 1.10中删除skiprows请改用skip_header

skip_header:int,可选

要在文件开头处跳过的行数。

skip_footer:int,可选

在文件结尾处跳过的行数。

转换器:变量,可选

将列的数据转换为值的函数集。转换器还可用于为缺失的数据提供默认值:转换器 = {3: t4> s: float(s 0)}

缺少:变量,可选

在numpy 1.10中删除了缺失请改用missing_values

missing_values:变量,可选

对应于缺失数据的字符串集合。

filling_values:变量,可选

缺少数据时用作默认值的一组值。

usecols:sequence,可选

要读取哪些列,0是第一列。例如,usecols = (1, 4, 5) 将提取第2,第5和第6列。

names:{None,True,str,sequence},可选

如果名称为True,则从第一个skip_header行之后的第一个有效行读取字段名称。如果名称是序列或逗号分隔名称的单字符串,则这些名称将用于定义结构化dtype中的字段名称。如果名称为None,将使用dtype字段的名称(如果有)。

excludelist:sequence,可选

要排除的名称列表。此列表附加到默认列表['return','file','print']。排除的名称将附加下划线:例如,文件将变为file _

deletechars:str,可选

必须从名称中删除的组合无效字符的字符串。

defaultfmt:str,可选

用于定义默认字段名称的格式,例如“f%i”或“f_%02i”。

自动分页:bool,可选

是否自动从变量中去除空格。

replace_space:char,可选

用于替换变量名称中的空格的字符。默认情况下,使用“_”。

case_sensitive:{True,False,'upper','lower'},可选

如果为True,字段名称区分大小写。如果为False或'upper',则字段名称将转换为大写。如果“lower”,字段名称将转换为小写。

解包:bool,可选

如果为真,则返回的数组被转置,使得可以使用x, y, z = loadtxt(...)

usemask:bool,可选

如果为True,返回一个屏蔽的数组。如果为False,返回一个常规数组。

松散:bool,可选

如果为True,请不要为无效值引发错误。

invalid_raise:bool,可选

如果为True,如果检测到列数不一致,则会引发异常。如果为False,则会发出警告,并跳过违规行。

max_rows:int,可选

要读取的最大行数。不得与skip_footer同时使用。如果给定,该值必须至少为1。默认是读取整个文件。

版本1.10.0中的新功能。

返回:

out:ndarray

从文本文件读取的数据。如果usemask为True,则这是一个蒙版的数组。

也可以看看

numpy.loadtxt
没有数据丢失时的等效函数。

笔记

  • 当使用空格作为分隔符时,或当没有给定分隔符作为输入时,两个字段之间不应有任何缺失数据。
  • 当变量命名(通过灵活的dtype或名称命名)时,文件中不能有任何头(否则会引发ValueError异常)。
  • 默认情况下,单个值不会被删除空格。使用自定义转换器时,请确保该函数删除空格。

参考文献

[R20]Numpy用户指南,I / O with Numpy部分。

例子

>>> from io import StringIO
>>> import numpy as np

带有混合dtype的逗号分隔文件

>>> s = StringIO("1,1.3,abcde")
>>> data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','f8'),
... ('mystring','S5')], delimiter=",")
>>> data
array((1, 1.3, 'abcde'),
      dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '|S5')])

使用dtype =无

>>> s.seek(0) # needed for StringIO example only
>>> data = np.genfromtxt(s, dtype=None,
... names = ['myint','myfloat','mystring'], delimiter=",")
>>> data
array((1, 1.3, 'abcde'),
      dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '|S5')])

指定dtype和名称

>>> s.seek(0)
>>> data = np.genfromtxt(s, dtype="i8,f8,S5",
... names=['myint','myfloat','mystring'], delimiter=",")
>>> data
array((1, 1.3, 'abcde'),
      dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '|S5')])

具有固定宽度列的示例

>>> s = StringIO("11.3abcde")
>>> data = np.genfromtxt(s, dtype=None, names=['intvar','fltvar','strvar'],
...     delimiter=[1,3,5])
>>> data
array((1, 1.3, 'abcde'),
      dtype=[('intvar', '<i8'), ('fltvar', '<f8'), ('strvar', '|S5')])