numpy之one-hot

来源:互联网 发布:iphone连mac充电好吗 编辑:程序博客网 时间:2024/06/05 03:27
a = np.array([1, 0, 3])#数据列,one-hot编码之后非零的列n_class = a.max() + 1n_sample = a.shape[0]b = np.zeros((n_sample, n_class))#3个样本,4个类别b[:, a] = 1#非零列赋值为1barray([[ 0.,  1.,  0.,  0.],       [ 1.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  1.]])>>>

使用np.eye生成M*N矩阵,后面跟的数组说明1偏移的位置

values = np.array([1, 0, 3])n_values = np.max(values) + 1np.eye(n_values)[values]array([[ 0.,  1.,  0.,  0.],       [ 1.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  1.]])

例如

np.eye(4,3)[np.array([1, 1, 1, 1])]array([[ 0.,  1.,  0.],       [ 0.,  1.,  0.],       [ 0.,  1.,  0.],       [ 0.,  1.,  0.]])
values = np.array([1, 0, 3,1,2,1,2])n_values = np.max(values) + 1np.eye(n_values)[values]array([[ 0.,  1.,  0.,  0.],       [ 1.,  0.,  0.,  0.],       [ 0.,  0.,  0.,  1.],       [ 0.,  1.,  0.,  0.],       [ 0.,  0.,  1.,  0.],       [ 0.,  1.,  0.,  0.],       [ 0.,  0.,  1.,  0.]])