gpt4 book ai didi

h5py - h5py 是否提供了一种简洁的方法来创建或使用组或数据集?

转载 作者:行者123 更新时间:2023-12-02 01:39:37 26 4
gpt4 key购买 nike

我正在使用 h5py 修复 python 脚本。它包含这样的代码:

hdf = h5py.File(hdf5_filename, 'a')
...
g = hdf.create_group('foo')
g.create_dataset('bar', ...whatever...)

有时,它会在已经具有名为“foo”的组的文件上运行,在这种情况下,我会看到“ValueError:无法创建组(名称已存在)”

解决此问题的一种方法是将 create_group 的一个简单行替换为四行,如下所示:

if 'foo' in hdf.keys():
g = hdf['foo']
else:
g = hdf.create_group['foo']

g.create_dataset(...etc...)

有没有更简洁的方法来做到这一点,也许只用一行?与标准 C 库中的文件一样,“a”模式将附加到现有文件,或者创建一个文件(如果尚不存在)。

数据集也是如此 - 我有

create_dataset('bar', ...) 

但应该首先检查:

if 'bar' in g.keys():
d = g['bar']
else:
d = g.create_dataset('bar')

我的愿望:找到 h5py 有名为 create_or_use_group() 和 create_or_use_dataset() 的方法。实际存在什么?

最佳答案

是:require_grouprequire_dataset :

with h5py.File("/tmp/so_hdf5/test2.h5", 'w') as f:
a = f.create_dataset('a',data=np.random.random((10, 10)))

with h5py.File("/tmp/so_hdf5/test2.h5", 'r+') as f:
a = f.require_dataset('a', shape=(10, 10), dtype='float64')
d = f.require_dataset('d', shape=(20, 20), dtype='float64')
g = f.require_group('foo')
print(a)
print(d)
print(g)

请注意,您确实需要知道数据集的形状和数据类型,否则 require_dataset 会抛出 TypeError。在这种情况下,您可以执行以下操作:

try:
a = f.require_dataset('a', shape=(10, 10), dtype='float64')
except TypeError:
a = f['a']

如果您还不知道形状和数据类型,我认为 require_dataset 相对于使用 try ... except ... 没有太大优势

关于h5py - h5py 是否提供了一种简洁的方法来创建或使用组或数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com