在 NumPy 中将索引数组转换为 one-hot 编码数组

新手上路,请多包涵

给定一维索引数组:

 a = array([1, 0, 3])

我想将其编码为二维数组:

 b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])

原文由 James Atwood 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

创建一个具有足够列的归零数组 b ,即 a.max() + 1

然后,对于每一行 i ,将 a[i] 列设置为 1

 >>> 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.]])

原文由 YXD 发布,翻译遵循 CC BY-SA 4.0 许可协议

>>> 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.]])

原文由 K3—rnc 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题