How can I retrieve HDF5 dataset that is storing strings(如何检索存储字符串的HDF5数据集)
本文介绍了如何检索存储字符串的HDF5数据集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用下面的命令创建H5
数据集,该数据集使用dtype
作为S10
来存储字符串数组。
create_dataset(dset_name, (0,) , dtype='S10', maxshape=None, chunks=True)
它将数据正确存储在hdf5
文件的组中。我甚至可以在HDF5
查看器中看到正确的数据。但是,当我使用group.keys()
时,我看不到数据集。数据集的图标也以不同的方式显示,如下图所示:
另外,当我在终端上启动数据集时,输出如下
[b'str', b'str2', b'str3', ...]
字符串int b‘’格式。
如何检索这样的数据集?
Check this link to see the difference in the icon of the dataset
推荐答案
hdf5(和h5py)将字符存储为字节字符串,而不是unicode字符。因此,在与HDF5和Python之间来回转换时,您必须转换数据类型。您可以对数组使用.astype()
或在单个元素中使用.encode()/.decode()
。
这里有一个简单的示例来演示该行为。它首先创建一个模仿您的文件,然后提取数据:一次作为默认字节字符串(‘S10’),然后使用.astype('U')
将数组转换为Unicode。
import h5py
import numpy as np
## Create a simple example file
with h5py.File('SO_69498550.h5','w') as h5w:
grp = h5w.create_group('flower')
iarr = np.arange(10)
grp.create_dataset('g', data=iarr, maxshape=None, chunks=True)
sarr = np.array( ['str0','str1','str2','str3','str4',
'str5','str6','str7','str8','str9'], dtype='S10' )
grp.create_dataset('g_var', data=sarr, maxshape=None, chunks=True)
## Open file and read data from string dataset: 'flower/g_var'
with h5py.File('SO_69498550.h5','r') as h5r:
u_arr = h5r['flower/g_var'][:]
print(f'u_arr dtype: {u_arr.dtype}')
print(u_arr)
s_arr = h5r['flower/g_var'][:].astype('U')
print(f's_arr dtype: {s_arr.dtype}')
print(s_arr)
这篇关于如何检索存储字符串的HDF5数据集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何检索存储字符串的HDF5数据集
猜你喜欢
- 获取多索引中某个级别的最后一个元素 2022-09-22
- 将文件从Azure文件加载到Azure数据库 2022-09-21
- 基于多个一级列的子集多索引DataFrame 2022-09-22
- 如何防止Groupby超越指数? 2022-09-22
- 使用带有CROSS_VAL_SCORE的自定义估计器失败 2022-09-21
- H5py:如何在HDF5组和数据集上使用key()循环 2022-09-21
- 如何命名HDF5数据集中的列? 2022-09-21
- 如何将属性添加到作为组存储在HDF5文件中的 pa 2022-09-21
- 合并具有多个索引和列值的数据帧 2022-09-22
- 为什么切换屏幕在Kivy中不起作用? 2022-09-21