我正在尝试将可变长度的字符串列表存储到HDF5数据集中。这个代码是
import h5py
h5File=h5py.File('xxx.h5','w')
strList=['asas','asas','asas']
h5File.create_dataset('xxx',(len(strList),1),'S10',strList)
h5File.flush()
h5File.Close()
我收到一条错误,指出“TypeError:dtype没有转换路径:dtype('& lt U3')”
其中& lt表示实际小于符号
我怎么解决这个问题。
答案 0 :(得分:21)
您正在读取Unicode字符串,但将数据类型指定为ASCII。根据{{3}},h5py目前不支持此转换。
您需要以h5py句柄格式对字符串进行编码:
asciiList = [n.encode("ascii", "ignore") for n in strList]
h5File.create_dataset('xxx', (len(asciiList),1),'S10', asciiList)
注意:并非以UTF-8编码的所有内容都可以用ASCII编码!
答案 1 :(得分:3)
我处于类似的情况,希望将数据帧的列名存储为hdf5文件中的数据集。假设df.columns是我想要存储的,我发现了以下工作:
h5File = h5py.File('my_file.h5','w')
h5File['col_names'] = df.columns.values.astype('S')
这假设列名称是可以用ASCII编码的“简单”字符串。