没有dtype('<u1')的转换路径issue =“”

时间:2018-07-29 07:29:00

标签: python python-3.x numpy hdf5 h5py

=“”

我有一个包含3d数组的2d列表(数据集)和一个标签(0或1),我想用两个数据集制作h5py文件,一个用于3d数组,另一个用于标签,这是我的代码: `

    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')

` 下图显示了二维列表的内容: enter image description here 但是当我运行代码时,它给了我一个错误:请参见下图 enter image description here 请帮我解决问题?

1 个答案:

答案 0 :(得分:1)

您的标签不是整数,而是字符串,这是HDF5的问题。您的错误消息与包含长度为1的字符串的数组有关。有关更多详细信息,请参见Strings in HDF5

您可以在构造NumPy数组之前或之后将其转换为整数,下面是几个示例:

label = np.array(label).astype(int)
# or, label = np.array(list(map(int, label)))

或者,由于您的值是01,因此选择bool可能会更有效:

label = np.array(label).astype(int).astype(bool)

此外,考虑将元数据保存为attributes