如何读取使用dtype=S10存储字符串的HDF5数据集
H5定长字节字符串数据集读取与检索方案
你创建数据集时指定的S10是HDF5标准的定长ASCII字节字符串类型,相关问题的解决方法如下:
字节格式字符串转换方法
读取时输出带b''前缀的字节串是该类型的正常表现,可按需求转换为普通字符串:
- 单个元素转换:读取后调用
decode方法即可
# 先获取数据集对象 dset = group["你的数据集名称"] # 转换单个元素 single_str = dset[0].decode("utf-8")
- 批量转换全量数据:
# 方法1:遍历转换 str_list = [item.decode("utf-8") for item in dset[:]] # 方法2:用numpy类型转换,性能更高 import numpy as np str_arr = dset[:].astype("U10")
group.keys()无法检索到数据集的排查方案
该问题和字符串类型本身没有关联,可按以下步骤排查:
- 确认打开文件使用的是读模式
r,且操作的组路径和你写入数据集的组路径完全一致 - 如果你使用的是h5py 2.x版本,
group.keys()返回的是视图对象,需要转为列表才能查看所有键:print(list(group.keys())) - 写入数据集后添加
file.flush()操作,确保所有数据落盘后再执行读取操作
图标异于普通数据集的说明
HDF5 Viewer会给字符串类型数据集分配专属图标,和数值类型数据集做区分,属于正常设计,不影响数据的正常读写。
内容的提问来源于stack exchange,提问作者Supratik Chaudhuri
相关产品推荐
相关产品推荐

