numpy.genfromtxt #
- 麻木的。genfromtxt ( fname、 dtype=<class 'float'>、 comments='#'、 delimiter=None、 skip_header=0、 skip_footer=0、转换器=None、 missing_values=None、 filling_values=None、 usecols=None、名称=None、 exceptlist=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='bytes'、 *、 ndmin=0、 like=None)[来源] #
从文本文件加载数据,并按指定处理缺失值。
第一个skip_header行之后的每一行在分隔符处被分割 ,并且注释字符后面的字符被丢弃。
- 参数:
- fname文件、str、pathlib.Path、str 列表、生成器
要读取的文件、文件名、列表或生成器。如果文件扩展名是
.gz
或.bz2
,则首先解压缩该文件。请注意,生成器必须返回字节或字符串。列表中的字符串或生成器生成的字符串被视为行。- 数据类型数据类型,可选
结果数组的数据类型。如果为“无”,则数据类型将分别由每列的内容确定。
- 注释str,可选
用于指示注释开始的字符。注释后一行中出现的所有字符都将被丢弃。
- 分隔符str、int 或序列,可选
用于分隔值的字符串。默认情况下,任何连续的空格都充当分隔符。还可以提供整数或整数序列作为每个字段的宽度。
- Skiprows int,可选
Skiprows在 numpy 1.10 中被删除。请改用skip_header。
- Skip_header int,可选
在文件开头要跳过的行数。
- Skip_footer int,可选
文件末尾要跳过的行数。
- 转换器变量,可选
将列数据转换为值的函数集。转换器还可用于为缺失数据提供默认值:。
converters = {3: lambda s: float(s or 0)}
- 缺失变量,可选
Missing在 numpy 1.10 中被删除。请改用missing_values 。
- Missing_values变量,可选
与缺失数据相对应的字符串集。
- fill_values变量,可选
数据丢失时用作默认值的一组值。
- usecols序列,可选
要读取哪些列,0 为第一列。例如, 将提取第 2、5 和 6 列。
usecols = (1, 4, 5)
- 名称{None、True、str、sequence},可选
如果names为True,则从第一个skip_header行之后的第一行读取字段名称。该行前面可以选择添加注释分隔符。如果名称是逗号分隔名称的序列或单字符串,则这些名称将用于定义结构化数据类型中的字段名称。如果名称为 None,则将使用 dtype 字段的名称(如果有)。
- 排除列表序列,可选
要排除的名称列表。该列表附加到默认列表 ['return','file','print']。排除的名称附加下划线:例如,file将变为file_。
- deletechars str,可选
包含必须从名称中删除的无效字符的字符串。
- defaultfmt str,可选
用于定义默认字段名称的格式,例如“f%i”或“f_%02i”。
- autostrip布尔值,可选
是否自动从变量中go除空格。
- Replace_space字符,可选
用于替换变量名称中的空格的字符。默认情况下,使用“_”。
- case_sensitive {True, False, 'upper', 'lower'}, 可选
如果为 True,则字段名称区分大小写。如果为 False 或“upper”,则字段名称将转换为大写。如果为“lower”,则字段名称将转换为小写。
- 解包bool, 可选
如果为 True,则返回的数组将被转置,以便可以使用 来解压缩参数。当与结构化数据类型一起使用时,将为每个字段返回数组。默认值为 False。
x, y, z = genfromtxt(...)
- usemask布尔值,可选
如果为 True,则返回一个掩码数组。如果为 False,则返回一个常规数组。
- 松散布尔值,可选
如果为 True,则不会引发无效值的错误。
- invalid_raise布尔值,可选
如果为 True,则如果检测到列数不一致,则会引发异常。如果为 False,则会发出警告并跳过有问题的行。
- max_rows int,可选
要读取的最大行数。不得与skip_footer 同时使用。如果给定,该值必须至少为 1。默认值是读取整个文件。
1.10.0 版本中的新增内容。
- 编码str,可选
用于解码输入文件的编码。当fname是文件对象时不适用。特殊值“bytes”启用向后兼容的解决方法,确保您在可能的情况下接收字节数组并将 latin1 编码的字符串传递给转换器。覆盖此值以接收 unicode 数组并将字符串作为输入传递给转换器。如果设置为“无”,则使用系统默认值。默认值为“字节”。
1.14.0 版本中的新增功能。
- ndmin整数,可选
参数相同
loadtxt
1.23.0 版本中的新增功能。
- 类似array_like,可选
允许创建非 NumPy 数组的引用对象。如果传入的类似数组
like
支持__array_function__
协议,则结果将由它定义。在这种情况下,它确保创建一个与通过此参数传入的数组对象兼容的数组对象。1.20.0 版本中的新增功能。
- 返回:
- 输出数组
从文本文件中读取的数据。如果usemask为 True,则这是一个掩码数组。
也可以看看
numpy.loadtxt
当没有数据丢失时的等效函数。
笔记
当使用空格作为分隔符时,或者没有指定分隔符作为输入时,两个字段之间不应缺少任何数据。
当变量被命名时(通过灵活的数据类型或名称),文件中不能有任何标头(否则会引发 ValueError 异常)。
默认情况下,单个值不会go除空格。使用自定义转换器时,请确保该函数确实删除了空格。
参考
[ 1 ]NumPy 用户指南,NumPy 的 I/O部分。
例子
>>> from io import StringIO >>> import numpy as np
具有混合数据类型的逗号分隔文件
>>> 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')])
指定数据类型和名称
>>> _ = 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')])