iopro.genfromtxt

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

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

参数

fname : 文件或 str
要读取的文件、文件名或生成器。如果文件扩展名是 .gz.bz2,则首先解压缩文件。请注意,生成器必须在 Python 3k 中返回字节字符串。
dtype : dtype, 可选
结果数组的数据类型。如果没有,dtypes 将由每列的内容单独确定。
评论 str,可选
用于指示注释开始的字符。注释后一行出现的所有字符都将被丢弃
分隔符 str、int 或序列,可选
用于分隔值的字符串。默认情况下,任何连续的空格都充当分隔符。也可以提供整数或整数序列作为每个字段的宽度。
skip_header : int,可选
要在文件开头跳过的行数。
skip_footer : int, 可选
文件末尾要跳过的行数
转换器 变量,可选
将列的数据转换为值的一组函数。转换器还可用于为缺失数据提供默认值:.converters = {3: lambda s: float(s or 0)}
missing_values : 变量,可选
与缺失数据对应的字符串集。
填充值 变量,可选
数据丢失时用作默认值的一组值。
usecols : 序列,可选
要读取的列,0 是第一列。例如, 将提取第 2、5 和 6 列。usecols = (1, 4, 5)
名称 {无,真,str,序列},可选
如果names为 True,则从第一个skip_header行之后的第一个有效行读取字段名称。如果名称是逗号分隔名称的序列或单字符串,则名称将用于定义结构化 dtype 中的字段名称。如果名称为无,则将使用 dtype 字段的名称(如果有)。
excludelist : 序列,可选
要排除的名称列表。此列表附加到默认列表 ['return','file','print']。排除的名称附加下划线:例如,file将变为file_
deletechars : str, 可选
组合必须从名称中删除的无效字符的字符串。
defaultfmt : str, 可选
用于定义默认字段名称的格式,例如“f%i”或“f_%02i”。
autostrip : bool, 可选
是否自动从变量中去除空格。
replace_space : 字符,可选
用于替换变量名称中的空格的字符。默认情况下,使用“_”。
case_sensitive : {True, False, 'upper', 'lower'}, 可选
如果为 True,则字段名称区分大小写。如果为 False 或 'upper',字段名称将转换为大写。如果为 'lower',字段名称将转换为小写。
解包 布尔,可选
如果为 True,则返回的数组被转置,以便可以使用解包参数 x, y, z = loadtxt(...)
usemask : bool, 可选
如果为 True,则返回一个掩码数组。如果为 False,则返回一个常规数组。
invalid_raise : bool,可选
如果为 True,如果在列数中检测到不一致,则会引发异常。如果为 False,则会发出警告并跳过违规行。

返回

ndarray
从文本文件中读取的数据。如果usemask为 True,则这是一个掩码数组。

另见

iopro.loadtxt :当没有数据丢失时的等效函数。

笔记

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

例子

>>> import iopro
>>> from io import StringIO

带有混合数据类型的逗号分隔文件

>>> s = StringIO("1,1.3,abcde")
>>> data = iopro.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 = iopro.genfromtxt(s, dtype=None,
... names = ['myint','myfloat','mystring'], delimiter=",")
>>> data
array((1, 1.3, 'abcde'),
      dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '|S5')])

指定数据类型和名称

>>> s.seek(0)
>>> data = iopro.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 = iopro.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')])