Python 生成one_hot标签和恢复

    首先生成一个主对角全为1的其余全为0的矩阵,比如有n个分类就是n * n,效果如下:

    随后根据标签列表(或者numpy数组)选取合适的行,比如标签是[9, 1, 0, 0], 那么就会选择上图矩阵中对应的9、1、0、0行,得到one_hot标签,如果不熟悉numpy数组的列表切片的(就是说numpy_array[slice]中的slice是列表) ,可以看下这篇Python Numpy数组使用列表索引

    恢复的话就是找列表中为1的下标即可。

    代码如下:

# encoding = utf-8
'''
    author : James-J
    time : 2019/05/29
'''

import numpy as np

if __name__ == '__main__':
    one_hot = np.eye(10) # 10*10的矩阵 对角线上是1
    print('np.eye(10)\n', one_hot)
    # 两种方法 传一维的numpy数组和列表都可以
    label = np.array([1, 4, 8, 9, 5, 0])
    one_hot_label = one_hot[label.astype(np.int32)] # 表示选取矩阵上面的第几行
    # label = [1, 4, 8, 9, 5, 0]
    # one_hot_label = one_hot[label]
    print('-----------------one_hot--------------------')
    print(one_hot_label)

    label = [one_label.tolist().index(1) for one_label in one_hot_label] # 找到下标是1的位置
    print('------------------label---------------------')
    print(label)

    得到的结果:

 

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值