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')])