首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将索引数组转换为1-hot编码的numpy数组

将索引数组转换为1-hot编码的numpy数组
EN

Stack Overflow用户
提问于 2015-04-24 02:24:54
回答 18查看 249.5K关注 0票数 291

假设我有一个一维numpy数组

代码语言:javascript
复制
a = array([1,0,3])

我想将其编码为2D one-hot数组

代码语言:javascript
复制
b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])

有没有一种快速的方法可以做到这一点?这比在a上循环设置b的元素更快。

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2015-04-24 02:30:15

数组a定义了输出数组中非零元素的列。您还需要定义行,然后使用花哨的索引:

代码语言:javascript
复制
>>> a = np.array([1, 0, 3])
>>> b = np.zeros((a.size, a.max()+1))
>>> b[np.arange(a.size),a] = 1
>>> b
array([[ 0.,  1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.]])
票数 473
EN

Stack Overflow用户

发布于 2016-05-19 20:35:51

代码语言:javascript
复制
>>> values = [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.]])
票数 226
EN

Stack Overflow用户

发布于 2017-11-27 19:13:22

如果你正在使用keras,有一个内置的实用程序:

代码语言:javascript
复制
from keras.utils.np_utils import to_categorical   

categorical_labels = to_categorical(int_labels, num_classes=3)

它的功能与@YXD's answer (请参阅source-code)非常相似。

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

https://stackoverflow.com/questions/29831489

复制
相关文章

相似问题

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