h5py Datasets 的写入过程是如何进行的?

How does the writing process work in h5py Datasets?

我正在使用以下语法覆盖 Python 中的 hdf5 文件的一部分:

import h5py

f = h5py.File(file_path, 'r')
dset = f["mykey"]
dset[:3] = [1,2,3]
f.close()

它似乎有效,但我无法在文档中找到有关如何进行此更新的信息。我想知道数据集是 (1) 加载到内存中,(2) 更新,(3) 完全写回,还是只是更新磁盘上的数据。

我问这个是因为我想为 npy 文件重新编码,我可以选择加载数据、更新数据和重写数据,或者只使用搜索并只在磁盘上进行必要的更新。

那么您是否研究过 h5py 文档,尤其是有关数据集的页面?都在那里。

这是我通过阅读这些文档和回答各种 SO 得出的结论。

f = h5py.File(file_path, 'r')
dset = f["mykey"]

dset 是数据集对象,位于文件中。

arr = dset[:]

会将数据集加载到一个 numpy 数组中。

dset[:3] = [1,2,3]

另一方面,将 np.array([1,2,3]) 写入文件中的数据集;也就是说,它将修改文件对象的前 3 个元素。

f.close()

由于缓冲等原因,在 fflushedclosed.

之前,写入可能不会真正发生

因为可以只加载数据集的一部分

arr = dset[:3]

我推断它可以在不加载整个 dset 的情况下执行写入。实际代码是 python、c++ 的混合,以 cython 作为桥梁。