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的列表
要读取的文件,文件名,列表或生成器。如果文件扩展名为gz或
bz2
,则首先解压缩文件。注意,生成器必须在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')])