如何使用 h5py 更新二维数组?

How can I update a 2 dimension array with h5py?

我想用 hdf5 存储一个二维数组,更新时遇到问题

import numpy as np
import h5py

# create a new storage
fh = h5py.File('dummy.h5', 'w')
fh.create_dataset('random', data=np.array([[0, 1], [2, 3]]))
fh.close()

# try to change the first array cell to value 6
fh = h5py.File('dummy.h5', 'a')
fh['random'][0][0] = 6
fh.close()

# read the array and print out the value at the first position
fh = h5py.File('dummy.h5', 'r')
print fh['random'][0][0] # print out '0' not '6'
fh.close()

此代码适用于普通的 1 维数组。它如何与 2 dim 阵列一起使用?

伯恩哈德,

这是一个很好的问题。我有一个快速的解决方法,但对 h5py(和 hdf5)的理解太浅,不知道为什么这行得通,但你的方法却行不通。

快速回答/解决方法

按元组索引,即 arr[x,y] 而不是 arr[x][y] 确实 有效(下面的第 10 和 11 行):

In [2]: fh = h5py.File('dummy.h5','a')
In [6]: fh['random'].value
Out[6]: 
array([[0, 1],
       [2, 3]])
In [8]: fh['random'][0][0] = 6
In [9]: fh['random'].value
Out[9]: 
array([[0, 1],
       [2, 3]])
In [10]: fh['random'][0,0] = 6
In [11]: fh['random'].value
Out[11]: 
array([[6, 1],
       [2, 3]])