首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将numpy数组输入和输出到h5py

将numpy数组输入和输出到h5py
EN

Stack Overflow用户
提问于 2014-01-05 07:41:12
回答 2查看 121.3K关注 0票数 107

我有一个Python代码,它的输出是

大小矩阵,其条目均为float类型。如果我用扩展名.dat保存它,那么文件大小大约是500MB。我读到使用h5py可以显著减少文件大小。因此,假设我有一个名为A的2Dnumpy数组。如何将其保存为h5py文件?另外,我如何读取相同的文件并将其作为numpy数组放入不同的代码中,因为我需要对该数组进行操作?

EN

回答 2

Stack Overflow用户

发布于 2014-01-06 04:27:50

h5py提供datasetsgroups的模型。前者基本上是数组,后者可以看作是目录。每一个都是命名的。您应该查看API的文档和示例:

http://docs.h5py.org/en/latest/quick.html

在一个简单的示例中,您预先创建了所有数据,并且只想将其保存到一个hdf5文件中,如下所示:

代码语言:javascript
复制
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()

然后,您可以使用以下命令将该数据加载回去:‘

代码语言:javascript
复制
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

一定要看看这些文档:

http://docs.h5py.org

写入hdf5文件依赖于h5py或pytables (每种方法都有一个位于hdf5文件规范之上的不同的python API )。您还应该看看numpy本身提供的其他简单的二进制格式,如np.savenp.savez等:

http://docs.scipy.org/doc/numpy/reference/routines.io.html

票数 138
EN

Stack Overflow用户

发布于 2017-01-27 04:47:26

处理文件打开/关闭并避免内存泄漏的A cleaner way

准备:

代码语言:javascript
复制
import numpy as np
import h5py

data_to_write = np.random.random(size=(100,20)) # or some such

写入:

代码语言:javascript
复制
with h5py.File('name-of-file.h5', 'w') as hf:
    hf.create_dataset("name-of-dataset",  data=data_to_write)

Read:

代码语言:javascript
复制
with h5py.File('name-of-file.h5', 'r') as hf:
    data = hf['name-of-dataset'][:]
票数 119
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20928136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档