numpy.fromfile#
- numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None)#
从文本或二进制文件中构造数组。
一种高效的读取已知数据类型的二进制数据以及解析简单格式文本文件的方法。可以使用 `tofile` 方法写入的数据通过此函数读取。
- 参数:
- file文件对象、字符串或 Path 对象
一个已打开的文件对象、包含文件名的字符串或 Path 对象。从文件对象读取时,它必须支持随机访问(即必须具有 `tell` 和 `seek` 方法)。
- dtypedata-type
返回数组的数据类型。对于二进制文件,它用于确定文件项的大小和字节序。大多数内置数值类型都受支持,扩展类型也可能受支持。
- count整数
要读取的项目数。`-1` 表示所有项目(即整个文件)。
- sepstr
如果文件是文本文件,则为项目之间的分隔符。空分隔符 (“”) 表示文件应被视为二进制。分隔符中的空格 (“ “) 匹配零个或多个空白字符。仅由空格组成的分隔符必须至少匹配一个空白字符。
- offsetint
文件当前位置起的偏移量(以字节为单位)。默认为 0。仅允许用于二进制文件。
- likearray_like, optional
用于创建非 NumPy 数组的引荐对象。如果传入的
like支持__array_function__协议,则结果将由它定义。在这种情况下,它确保创建与通过此参数传入的数组兼容的数组对象。版本 1.20.0 中新增。
另请参阅
load,savendarray.tofileloadtxt从文本文件中加载数据的更灵活的方法。
备注
请勿依赖 `tofile` 和 `fromfile` 的组合进行数据存储,因为生成的二进制文件不是平台独立的。特别是,没有保存字节序或数据类型信息。可以使用 `save` 和 `load` 以平台独立的方式存储数据,格式为 `.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')])