我有一个Python代码,它的输出是
大小矩阵,其条目均为float
类型。如果我用扩展名.dat
保存它,那么文件大小大约是500MB。我读到使用h5py
可以显著减少文件大小。因此,假设我有一个名为A
的2Dnumpy数组。如何将其保存为h5py文件?另外,我如何读取相同的文件并将其作为numpy数组放入不同的代码中,因为我需要对该数组进行操作?
发布于 2014-01-06 04:27:50
h5py提供datasets和groups的模型。前者基本上是数组,后者可以看作是目录。每一个都是命名的。您应该查看API的文档和示例:
http://docs.h5py.org/en/latest/quick.html
在一个简单的示例中,您预先创建了所有数据,并且只想将其保存到一个hdf5文件中,如下所示:
In [1]: import numpy as np
In [2]: import h5py
In [3]: a = np.random.random(size=(100,20))
In [4]: h5f = h5py.File('data.h5', 'w')
In [5]: h5f.create_dataset('dataset_1', data=a)
Out[5]: <HDF5 dataset "dataset_1": shape (100, 20), type "<f8">
In [6]: h5f.close()
然后,您可以使用以下命令将该数据加载回去:‘
In [10]: h5f = h5py.File('data.h5','r')
In [11]: b = h5f['dataset_1'][:]
In [12]: h5f.close()
In [13]: np.allclose(a,b)
Out[13]: True
一定要看看这些文档:
写入hdf5文件依赖于h5py或pytables (每种方法都有一个位于hdf5文件规范之上的不同的python API )。您还应该看看numpy本身提供的其他简单的二进制格式,如np.save
、np.savez
等:
发布于 2017-01-27 04:47:26
处理文件打开/关闭并避免内存泄漏的A cleaner way:
准备:
import numpy as np
import h5py
data_to_write = np.random.random(size=(100,20)) # or some such
写入:
with h5py.File('name-of-file.h5', 'w') as hf:
hf.create_dataset("name-of-dataset", data=data_to_write)
Read:
with h5py.File('name-of-file.h5', 'r') as hf:
data = hf['name-of-dataset'][:]
https://stackoverflow.com/questions/20928136
复制相似问题