numpy arrays 与h5py之间如何输入输出?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (68)

我有一个Python代码,其输出是

大小矩阵,其条目都是float。如果我用分机保存它.dat文件大小为500 MB。我读到h5py大大减少了文件大小。所以,假设我有一个名为A...。如何将其保存到h5py文件?

提问于
用户回答回答于

执行以下操作:

准备:

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)

如下:

with h5py.File('name-of-file.h5', 'r') as hf:
    data = hf['name-of-dataset'][:]
用户回答回答于

h5py提供了一个数据集...。前者基本上是数组,而后者则可以看作是目录。每个人都有名字。您应该查看API的文档和示例:

http://docs.h5py.org/en/最新/Quick.html

一个简单的示例,在这个示例中,您要预先创建所有数据,只想将其保存到hdf 5文件中,该示例如下所示:

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

查看文档:

http://docs.h5py.org

写入hdf 5文件取决于h5py或pytable(每个pythonAPI位于hdf 5文件规范之上)。您还应该查看numpy本地提供的其他简单二进制格式,如np.savenp.savez

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

扫码关注云+社区