できればh5pyを使用して、hdf5ファイルからデータセットを削除する方法はありますか?または、他のデータセットをそのままにして、データセットを上書きすることは可能ですか?
私の理解では、h5pyは5つのモードでhdf5ファイルを読み書きできます
f = h5py.File("filename.hdf5",'mode')
modeはr
for read、r+
読み取り/書き込み用、a
読み取り/書き込み用、ただし存在しない場合は新しいファイルを作成、w
は書き込み/上書き用、_w-
これはw
と同じですが、ファイルが既に存在する場合は失敗します。私はすべて試しましたが、どれもうまくいかないようです。
どんな提案でも大歓迎です。
はい、これを行うことができます。
_with h5py.File(input, "a") as f:
del f[datasetname]
_
ファイルを書き込み可能モードで開く必要があります。たとえば、追加(上記)または書き込みです。
コメントの@ seppo-enarviで以前に推奨された目的が述べられているようにf.__delitem__(datasetname)
関数は実装することですdel
- 演算子。これを使用してデータセットを削除できます _del f[datasetname]
_
ファイルを開くモードで何をすればいいのかわからない。読み取り/書き込みの場合、r +を使用します。
私の知る限りでは、特にファイルのサイズが縮小しない場合でも、削除は簡単/不可能です。
しかし、コンテンツの上書きは問題ありません
f['mydataset'][:] = 0
私はこれを試してみましたが、実際にファイルのサイズを小さくできる唯一の方法は、すべてを新しいファイルにコピーし、興味のないデータセットを除外することです。
fs = h5py.File('WFA.h5', 'r')
fd = h5py.File('WFA_red.h5', 'w')
for a in fs.attrs:
fd.attrs[a] = fs.attrs[a]
for d in fs:
if not 'SFS_TRANSITION' in d: fs.copy(d, fd)