numpy.
genfromtxt
(fname,dtype = < class'float '>,comments ='#',delimiter = None,skip_header = 0,skip_footer = 0,converters = None,missing_values = None,filling_values = None,usecols = None,names = None,excludelist =无,deletechars =“!#$%&'()* +,-./ :;< =>?@[ \]^{| }~”,replace_space ='_',autostrip = False,case_sensitive = True,defaultfmt ='f%i',unpack = None,usemask = False,松散= True,invalid_raise = True,max_rows = None,encoding ='bytes' )[源代码] ¶从文本文件加载数据,并按指定方式处理缺少的值。
在第一行skip_header行之后的每一行都在定界符处分割 ,并且注释字符之后的字符将被丢弃。
要读取的文件,文件名,列表或生成器。如果文件扩展名是gz或bz2
,则首先将文件解压缩。请注意,生成器必须返回字节字符串。列表中或由生成器生成的字符串被视为行。
结果数组的数据类型。如果为None,则dtypes将分别由每一列的内容确定。
用于指示注释开始的字符。注释后一行中出现的所有字符都将被丢弃
用于分隔值的字符串。默认情况下,任何连续的空格都用作分隔符。也可以提供整数或整数序列作为每个字段的宽度。
在numpy 1.10中删除了行列。请改用skip_header。
文件开头要跳过的行数。
文件末尾要跳过的行数。
将列的数据转换为值的一组函数。转换器还可以用于为丢失的数据提供默认值:。converters = {3: lambda s: float(s or 0)}
在numpy 1.10中已删除缺少的内容。请改用missing_values 。
与缺少的数据相对应的字符串集。
缺少数据时用作默认值的一组值。
要读取的列,第一列为0。例如,
将提取第二,第五和第六列。usecols = (1, 4, 5)
如果names为True,则从第一行skip_header行之后的第一行读取字段名称。此行可以选择用注释定界符继续。如果名称是序列或逗号分隔名称的单字符串,则这些名称将用于以结构化dtype定义字段名称。如果names为None,则将使用dtype字段的名称(如果有)。
要排除的名称列表。此列表将附加到默认列表['return','file','print']。排除的名称后面加上下划线:例如,文件将变为file_。
一个字符串,其中包含必须从名称中删除的无效字符。
用于定义默认字段名称的格式,例如“ f%i”或“ f_%02i”。
是否自动从变量中去除空格。
用于替换变量名称中空格的字符。默认情况下,使用“ _”。
如果为True,则字段名称区分大小写。如果为False或“ upper”,则字段名称将转换为大写。如果为“ lower”,则字段名称将转换为小写。
如果为True,则对返回的数组进行转置,以便可以使用以下命令解压缩参数 x, y, z = loadtxt(...)
如果为True,则返回掩码数组。如果为False,则返回一个常规数组。
如果为True,则不要为无效值引发错误。
如果为True,则在列数中检测到不一致时引发异常。如果为False,则发出警告,并且跳过有问题的行。
读取的最大行数。不能同时与skip_footer一起使用。如果给定,则该值必须至少为1。默认值是读取整个文件。
1.10.0版中的新功能。
用于解码输入文件的编码。当fname是文件对象时不适用。特殊值'bytes'可实现向后兼容的解决方法,以确保您尽可能接收字节数组,并将latin1编码的字符串传递给转换器。覆盖此值以接收unicode数组,并将字符串作为输入传递给转换器。如果设置为“无”,则使用系统默认值。默认值为“字节”。
1.14.0版中的新功能。
从文本文件读取数据。如果usemask为True,则为掩码数组。
也可以看看
numpy.loadtxt
当没有数据丢失时的等效功能。
笔记
当使用空格作为分隔符时,或者没有输入分隔符时,两个字段之间不应缺少任何数据。
命名变量时(通过灵活的dtype或使用names命名),文件中不得包含任何标头(否则将引发ValueError异常)。
默认情况下,各个值不会去除空格。使用自定义转换器时,请确保该函数确实删除了空格。
参考文献
NumPy用户指南,使用NumPy的I / O部分。
例子
>>> from io import StringIO
>>> import numpy as np
带有dtype的逗号分隔文件
>>> s = StringIO(u"1,1.3,abcde")
>>> data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','f8'),
... ('mystring','S5')], delimiter=",")
>>> data
array((1, 1.3, b'abcde'),
dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
使用dtype = None
>>> _ = s.seek(0) # needed for StringIO example only
>>> data = np.genfromtxt(s, dtype=None,
... names = ['myint','myfloat','mystring'], delimiter=",")
>>> data
array((1, 1.3, b'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, b'abcde'),
dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
具有固定宽度列的示例
>>> s = StringIO(u"11.3abcde")
>>> data = np.genfromtxt(s, dtype=None, names=['intvar','fltvar','strvar'],
... delimiter=[1,3,5])
>>> data
array((1, 1.3, b'abcde'),
dtype=[('intvar', '<i8'), ('fltvar', '<f8'), ('strvar', 'S5')])
显示评论的示例
>>> f = StringIO('''
... text,# of chars
... hello world,11
... numpy,5''')
>>> np.genfromtxt(f, dtype='S12,S12', delimiter=',')
array([(b'text', b''), (b'hello world', b'11'), (b'numpy', b'5')],
dtype=[('f0', 'S12'), ('f1', 'S12')])