我有一个2d列表(Data_set),其中包含一个3d数组和一个标签(0或1),我想用两个数据集(一个用于3d数组,另一个用于标签)来生成h5py文件,这是我的代码:
data = []
label = []
for i in range(len(Data_set)):
data.append(Data_set[i][0])# 3d array
label.append(Data_set[i][1])#label
data = np.array(data)
label = np.array(label)
dt = np.dtype('int16')
with h5py.File(output_path+'dataset.h5', 'w') as hf:
hf.create_dataset('data',dtype=dt ,data=data, compression='lzf')
hf.create_dataset('label', dtype=dt, data=label, compression='lzf')` 2d列表的内容如下图所示:

但是,当我运行代码时,它会给出一个错误:见下面的图像

请帮我解决这个问题?
发布于 2018-07-29 09:28:25
您的标签不是整数,它们是字符串,这是HDF5的一个问题。您的错误消息涉及由长度为1的字符串组成的数组。有关详细信息,请参阅HDF5中的字符串。
您可以在构造NumPy数组之前或之后转换为整数,下面是几个示例:
label = np.array(label).astype(int)
# or, label = np.array(list(map(int, label)))或者,由于您的值是0或1,选择bool可能更有效:
label = np.array(label).astype(int).astype(bool)同时,考虑将元数据保存为属性。
https://stackoverflow.com/questions/51578212
复制相似问题