numpy.fromfile#

numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None)#

从文本或二进制文件中构造一个数组。

一种读取已知数据类型二进制数据以及解析简单格式文本文件的高效方法。可以使用此函数读取使用 tofile 方法写入的数据。

参数:
file文件或字符串或路径

打开的文件对象或文件名。

版本 1.17.0 中已更改: pathlib.Path 对象现在已被接受。

dtype数据类型

返回数组的数据类型。对于二进制文件,它用于确定文件中项目的尺寸和字节顺序。大多数内置数值类型都受支持,扩展类型也可能受支持。

版本 1.18.0 中新增: 复杂数据类型。

count整数

要读取的项目数。-1 表示所有项目(即完整文件)。

sep字符串

如果文件是文本文件,则为项目之间的分隔符。空 (“”) 分隔符表示文件应被视为二进制文件。分隔符中的空格 (“ ”) 匹配零个或多个空白字符。仅由空格组成的分隔符必须至少匹配一个空白字符。

offset整数

从文件当前位置开始的偏移量(以字节为单位)。默认为 0。仅允许用于二进制文件。

版本 1.17.0 中新增。

like类数组,可选

参考对象,允许创建非 NumPy 数组的数组。如果作为 like 传入的类数组支持 __array_function__ 协议,则结果将由其定义。在这种情况下,它确保创建与通过此参数传入的数组对象兼容的数组对象。

版本 1.20.0 中新增。

另请参阅

loadsave
ndarray.tofile
loadtxt

从文本文件加载数据更灵活的方式。

备注

不要依赖 tofilefromfile 的组合进行数据存储,因为生成的二进制文件不是平台无关的。特别是,没有保存字节顺序或数据类型信息。数据可以使用 saveload 存储在平台无关的 .npy 格式中。

示例

构造一个 ndarray

>>> import numpy as np
>>> dt = np.dtype([('time', [('min', np.int64), ('sec', np.int64)]),
...                ('temp', float)])
>>> x = np.zeros((1,), dtype=dt)
>>> x['time']['min'] = 10; x['temp'] = 98.25
>>> x
array([((10, 0), 98.25)],
      dtype=[('time', [('min', '<i8'), ('sec', '<i8')]), ('temp', '<f8')])

将原始数据保存到磁盘

>>> import tempfile
>>> fname = tempfile.mkstemp()[1]
>>> x.tofile(fname)

从磁盘读取原始数据

>>> np.fromfile(fname, dtype=dt)
array([((10, 0), 98.25)],
      dtype=[('time', [('min', '<i8'), ('sec', '<i8')]), ('temp', '<f8')])

存储和加载数据的推荐方法

>>> np.save(fname, x)
>>> np.load(fname + '.npy')
array([((10, 0), 98.25)],
      dtype=[('time', [('min', '<i8'), ('sec', '<i8')]), ('temp', '<f8')])