我正在将具有 numpy 类型的 Python 字典序列化到 H5 文件。
一般情况下,代码是
for key, value in dict.items():
if isinstance(value, str):
f.attrs[key] = value.encode('utf-8')
elif isinstance(value, XXXXXX):
param_dset = f.create_dataset(key, value.shape, dtype=value.dtype)
if not value.shape:
# scalar
param_dset[()] = value
else:
param_dset[:] = value
elif isinstance(value, dict):
save_dict_to_hdf5_group(f.create_group(key), value)
else:
raise ValueError('Cannot save type "%s" to HDF5' % type(value))
我正在努力思考要在 XXXXXX
中放入什么内容。具体来说,我可以放入任何numpy类型吗,还是H5只存储特定类型?
例如,(np.ndarray, np.int64)
是一个选择,但它会错过 float32
。 (np.ndarray, np.generic)
是另一种选择,但 H5py 接受所有通用 numpy 类型吗?
最佳答案
来自 h5py 文档:
完全支持的类型:
Type Precisions Notes
Integer 1, 2, 4 or 8 byte, BE/LE, signed/unsigned
Float 2, 4, 8, 12, 16 byte, BE/LE
Complex 8 or 16 byte, BE/LE Stored as HDF5 struct
Compound Arbitrary names and offsets
Strings (fixed-length) Any length
Strings (variable-length) Any length, ASCII or Unicode
Opaque (kind ‘V’) Any length
Boolean NumPy 1-byte bool Stored as HDF5 enum
Array Any supported type
Enumeration Any NumPy integer type Read/write as integers
References Region and object
Variable length array Any supported type See Special Types
不支持的类型:
Type
HDF5 “time” type
NumPy “U” strings
NumPy generic “O”
关于python - h5py 接受什么 numpy dtypes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45587242/