numpy.genfromtxt#
- 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=None, deletechars=" !#$%&'()*+, -./:;<=>?@[\\]^{|}~", replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding=None, *, ndmin=0, like=None)[源代码]#
- 从文本文件中加载数据,按指定方式处理缺失值。 - 跳过前 skip_header 行之后,每行都会在 delimiter 字符处分割,并且 comments 字符之后的所有字符都将被丢弃。 - 参数:
- fname文件、字符串、pathlib.Path、字符串列表、生成器
- 要读取的文件、文件名、列表或生成器。如果文件名扩展名为 - .gz或- .bz2,则文件会先被解压缩。请注意,生成器必须返回字节或字符串。列表中的字符串或由生成器生成的字符串被视为行。
- dtype数据类型,可选
- 结果数组的数据类型。如果为 None,则数据类型将由每列的内容单独确定。 
- comments字符串,可选
- 用于指示注释开始的字符。一行中注释字符之后出现的所有字符都将被丢弃。 
- delimiter字符串、整数或序列,可选
- 用于分隔值的字符串。默认情况下,任何连续的空白字符都将作为分隔符。也可以提供一个整数或整数序列作为每个字段的宽度。 
- skiprows整数,可选
- skiprows 在 NumPy 1.10 中已移除。请改用 skip_header。 
- skip_header整数,可选
- 文件开头要跳过的行数。 
- skip_footer整数,可选
- 文件末尾要跳过的行数。 
- converters变量,可选
- 将列数据转换为值的函数集。转换器也可用于为缺失数据提供默认值: - converters = {3: lambda s: float(s or 0)}。
- missing变量,可选
- missing 在 NumPy 1.10 中已移除。请改用 missing_values。 
- missing_values变量,可选
- 对应于缺失数据的字符串集。 
- filling_values变量,可选
- 当数据缺失时用作默认值的值集。 
- usecols序列,可选
- 要读取的列,0 表示第一列。例如, - usecols = (1, 4, 5)将提取第 2、5 和 6 列。
- names{None, True, 字符串, 序列},可选
- 如果 names 为 True,则字段名将从跳过前 skip_header 行后的第一行读取。此行可选地可以由注释分隔符开头。注释分隔符之前的任何内容都将被丢弃。如果 names 是一个序列或一个逗号分隔名称的单个字符串,则这些名称将用于定义结构化数据类型中的字段名。如果 names 为 None,则将使用数据类型字段的名称(如果有)。 
- excludelist序列,可选
- 要排除的名称列表。此列表将附加到默认列表 [‘return’,’file’,’print’] 中。被排除的名称会附加下划线:例如,file 将变为 file_。 
- deletechars字符串,可选
- 一个字符串,包含必须从名称中删除的无效字符。 
- defaultfmt字符串,可选
- 用于定义默认字段名称的格式,例如“f%i”或“f_%02i”。 
- autostrip布尔值,可选
- 是否自动去除变量中的空白字符。 
- replace_space字符,可选
- 用于替换变量名中空白字符的字符。默认使用“_”。 
- case_sensitive{True, False, ‘upper’, ‘lower’},可选
- 如果为 True,字段名区分大小写。如果为 False 或 'upper',字段名将转换为大写。如果为 'lower',字段名将转换为小写。 
- unpack布尔值,可选
- 如果为 True,则返回的数组会进行转置,以便可以使用 - x, y, z = genfromtxt(...)解包参数。当与结构化数据类型一起使用时,会为每个字段返回数组。默认值为 False。
- usemask布尔值,可选
- 如果为 True,则返回一个掩码数组。如果为 False,则返回一个常规数组。 
- loose布尔值,可选
- 如果为 True,则不对无效值引发错误。 
- invalid_raise布尔值,可选
- 如果为 True,则在检测到列数不一致时会引发异常。如果为 False,则会发出警告并跳过有问题的行。 
- max_rows整数,可选
- 要读取的最大行数。不能与 skip_footer 同时使用。如果给定,值必须至少为 1。默认是读取整个文件。 
- encoding字符串,可选
- 用于解码输入文件的编码。当 fname 是文件对象时,不适用。特殊值 'bytes' 启用向后兼容性变通方法,确保在可能的情况下接收字节数组,并将 latin1 编码的字符串传递给转换器。覆盖此值以接收 Unicode 数组并将字符串作为输入传递给转换器。如果设置为 None,则使用系统默认值。默认值为 'bytes'。 - 版本 2.0 中的更改:在 NumPy 2 之前,为了兼容 Python 2,默认值为 - 'bytes'。现在默认值为- None。
- ndmin整数,可选
- 与 - loadtxt参数相同- 1.23.0 版新增。 
- like类数组对象,可选
- 引用对象,允许创建非 NumPy 数组。如果作为 - like传入的类数组对象支持- __array_function__协议,则结果将由其定义。在这种情况下,它确保创建与通过此参数传入的对象兼容的数组对象。- 1.20.0 版新增。 
 
- 返回:
- outndarray
- 从文本文件中读取的数据。如果 usemask 为 True,则这是一个掩码数组。 
 
 - 另请参阅 - numpy.loadtxt
- 在没有缺失数据时使用的等效函数。 
 - 备注 - 当使用空格作为分隔符,或者没有给出任何分隔符作为输入时,两个字段之间不应有任何缺失数据。 
- 当变量被命名(无论是通过灵活的数据类型还是使用 names 序列)时,文件中不能有任何标题(否则会引发 ValueError 异常)。 
- 默认情况下,单个值不会去除空格。使用自定义转换器时,请确保函数会去除空格。 
- 自定义转换器可能会因为数据类型推断而收到意外值。 
 - 参考文献 [1]- NumPy 用户指南,NumPy I/O 章节。 - 示例 - >>> from io import StringIO >>> import numpy as np - 具有混合数据类型的逗号分隔文件 - >>> s = StringIO("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, 'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '<U5')]) - 指定数据类型和名称 - >>> _ = 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("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', '<U5')]) - 显示注释的示例 - >>> 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')])