怎么检索存储字符串的HDF5数据集

原学程将引见若何检索保存字符串的HDF五数据散的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么检索存储字符串的HDF5数据集 教程 第1张

成绩描写

我正在应用上面的敕令创立H五数据散,该数据散应用dtype作为S一0去保存字符串数组。

create_dataset(dset_name, (0,) , dtype='S一0', maxshape=None, chunks=True)

它将数据准确保存在hdf文件的组中。我乃至不妨在HDF五检查器中瞅到准确的数据。然则,当我应用group.keys()时,我瞅没有到数据散。数据散的图标也以分歧的方法显示,以下图所示:

别的,当我在终端上开动数据散时,输入以下
[b'str', b'str二', b'str三', ...]

怎样检索如许的数据散?

Check this link to see the difference in the icon of the dataset

推举谜底

hdf五(以及h五py)将字符保存为字节字符串,而没有是unicode字符。是以,在与HDF五以及Python之间往返转换时,您必需转换数据典型。您不妨对于数组应用.astype()或者在单个元素中应用.encode()/.decode()

这里有1个简略的示例去演示该行动。它起首创立1个模拟您的文件,而后提与数据:1次作为默许字节字符串(‘S一0’),而后应用.astype('U')将数组转换为Unicode。

import h五py
import numpy as np

## Create a simple example file
with h五py.File('SO_六九四九8五五0.h五','w') as h五w:
 grp = h五w.create_group('flower')
 iarr = np.arange(一0)
 grp.create_dataset('g', data=iarr, maxshape=None, chunks=True)
 sarr = np.array( ['str0','str一','str二','str三','str四', 
'str五','str六','str七','str8','str九'], dtype='S一0' )
 grp.create_dataset('g_var', data=sarr, maxshape=None, chunks=True)
 
## Open file and read data from string dataset: 'flower/g_var'
with h五py.File('SO_六九四九8五五0.h五','r') as h五r:
 u_arr = h五r['flower/g_var'][:]
 print(f'u_arr dtype: {u_arr.dtype}') 
 print(u_arr)
 s_arr = h五r['flower/g_var'][:].astype('U')
 print(f's_arr dtype: {s_arr.dtype}') 
 print(s_arr)

佳了闭于怎样检索保存字符串的HDF五数据散的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。