from pathlib import Path
import numpy as np
import os
p = Path('temp.npy')
with p.open('ab') as f:
np.save(f, np.zeros(2))
np.save(f, np.ones(2))
with p.open('rb') as f:
fsz = os.fstat(f.fileno()).st_size
out = np.load(f)
while f.tell() < fsz:
out = np.vstack((out, np.load(f)))
这是Mohit Pandey答案的扩展,显示了一个完整的保存/加载示例。它使用Python3.6和Numpy1.11.3进行了测试。
.npy
文件包含头,头中包含数组的形状和数据类型。如果知道结果数组的外观,可以自己编写头,然后将数据分块写入。E、 下面是连接二维矩阵的代码:如果您需要一个更通用的解决方案(在追加时在位编辑头),则必须使用像[1]中那样的
fseek
技巧。灵感来自
[1] :https://mail.scipy.org/pipermail/numpy-discussion/2009-August/044570.html(不是现成的)
[2] :https://docs.scipy.org/doc/numpy/neps/npy-format.html
[3] :https://github.com/numpy/numpy/blob/master/numpy/lib/format.py
内置的
.npy
文件格式非常适合处理小型数据集,而不依赖于numpy
以外的外部模块。但是,当您开始拥有大量数据时,最好使用设计用于处理此类数据集的文件格式(如HDF5)。
例如,下面是用PyTables在HDF5中保存
numpy
数组的解决方案步骤1:创建可扩展的^{} 存储
步骤2:将行追加到现有数据集(如果需要)
步骤3:读取数据的子集
相关问题 更多 >
编程相关推荐