首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有dtype ('<U1')的转换路径

没有dtype ('<U1')的转换路径
EN

Stack Overflow用户
提问于 2018-07-29 07:28:59
回答 1查看 12.8K关注 0票数 3

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

代码语言:javascript
复制
    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列表的内容如下图所示:

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

请帮我解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-29 09:28:25

您的标签不是整数,它们是字符串,这是HDF5的一个问题。您的错误消息涉及由长度为1的字符串组成的数组。有关详细信息,请参阅HDF5中的字符串

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

代码语言:javascript
复制
label = np.array(label).astype(int)
# or, label = np.array(list(map(int, label)))

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

代码语言:javascript
复制
label = np.array(label).astype(int).astype(bool)

同时,考虑将元数据保存为属性

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51578212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档