您的位置:首页 > 编程语言 > Python开发

numpy之one-hot

2017-10-10 11:11 351 查看
a = np.array([1, 0, 3])#数据列,one-hot编码之后非零的列
n_class = a.max() + 1
n_sample = a.shape[0]
b = np.zeros((n_sample, n_class))#3个样本,4个类别
b[:, a] = 1#非零列赋值为1
b

array([[ 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) + 1
np.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) + 1
np.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.]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: