上一主题

numpy.frombuffer

下一主题

numpy.fromfunction

numpy.fromfile

numpy.fromfile(file, dtype=float, count=-1, sep='')

从文本或二进制文件中的数据构造数组。

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

参数:

文件:文件或str

打开文件对象或文件名。

dtype:数据类型

返回数组的数据类型。对于二进制文件,它用于确定文件中项目的大小和字节顺序。

count:int

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

sep:str

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

也可以看看

loadsavendarray.tofile

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

笔记

对于数据存储,不要依赖tofilefromfile的组合,因为生成的二进制文件不是平台独立的。特别地,不保存字节顺序或数据类型信息。数据可以使用saveload存储在独立于.npy的平台中。

例子

构造一个ndarray:

>>> dt = np.dtype([('time', [('min', int), ('sec', int)]),
...                ('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', '<i4'), ('sec', '<i4')]), ('temp', '<f8')])

将原始数据保存到磁盘:

>>> import os
>>> fname = os.tmpnam()
>>> x.tofile(fname)

从磁盘读取原始数据:

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

建议的存储和加载数据的方式:

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