数字类别生成onehot

对应行的列#原始标签
my_label = np.array([3,4,2,4,6,1])
#类别数量
num_class = 6
#样本数量
num = my_label.shape[0]
#生成onehot标签
label = np.zeros((num,num_class))
label[range(num),my_label-1] = 1
print(label)

原理是通过numpy的数组索引,注意不能用label[:,my_label-1]的方式,因为使用切片操作,之后会操作某一列,而不是对应行的列。

比如

a = np.random.randint(1,10,(2,3))
print(a)
print("*********")
print(a[[0,1],[2,1]])
print("*********")
print(a[:,[2,1]])

结果为

可以看到使用切片之后会操作某一列,而不是对应行的列

posted @ 2019-07-17 20:38  来一点音乐  阅读(453)  评论(0编辑  收藏  举报