h5py không thực sự được thiết kế để thực hiện việc này. Pandas có thể là một thư viện tốt hơn để sử dụng, vì nó được xây dựng xung quanh khái niệm về các bảng.
Có nói rằng, đây là cách để làm điều đó:
In [1]: f = h5py.File('test.h5')
In [2]: arr = rand(4,4)
In [3]: dset = f.create_dataset('foo',data=arr,maxshape=(2000,2000))
In [4]: dset[:]
Out[4]:
array([[ 0.29732874, 0.59310285, 0.61116263, 0.79950116],
[ 0.4194363 , 0.4691813 , 0.95648712, 0.56120731],
[ 0.76868585, 0.07556214, 0.39854704, 0.73415885],
[ 0.0919063 , 0.0420656 , 0.35082375, 0.62565894]])
In [5]: dset[1:-1,:] = dset[2:,:]
In [6]: dset.resize((3,4))
In [7]: dset[:]
Out[7]:
array([[ 0.29732874, 0.59310285, 0.61116263, 0.79950116],
[ 0.76868585, 0.07556214, 0.39854704, 0.73415885],
[ 0.0919063 , 0.0420656 , 0.35082375, 0.62565894]])
này loại bỏ cột 1 từ dset
. Nó làm như vậy bằng cách gán các cột 2 và 3 đến 1 và 2, tương ứng, trước khi thu hẹp tập dữ liệu theo một cột. Trao đổi các subscript để loại bỏ hàng 1. Bạn có thể dễ dàng viết một wrapper xung quanh này nếu bạn đang đi để được làm điều đó rất nhiều.