numpy.fromfile#
- numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None)#
从文本或二进制文件中的数据构造数组.
这是一种非常高效的读取具有已知数据类型的二进制数据的方法,以及解析简单格式的文本文件的方法.可以使用此函数读取使用 tofile 方法写入的数据.
- 参数:
- filefile or str or Path
打开的文件对象或文件名.
- dtypedata-type
返回数组的数据类型.对于二进制文件,它用于确定文件中项目的大小和字节顺序.支持大多数内置数字类型,并且可能支持扩展类型.
- countint
要读取的项目数.
-1表示所有项目(即,整个文件).- sepstr
如果文件是文本文件,则项目之间的分隔符.空 (“”) 分隔符表示该文件应被视为二进制文件.分隔符中的空格 (” “) 匹配零个或多个空白字符.仅由空格组成的分隔符必须至少匹配一个空白.
- offsetint
从文件当前位置的偏移量(以字节为单位).默认为0.仅允许用于二进制文件.
- like类数组,可选
引用对象,允许创建非 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')])