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

给定一维索引数组:

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

我想将它一次性编码为二维数组:

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

最佳答案

创建一个具有足够列的归零数组 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.]])

https://stackoverflow.com/questions/29831489/

相关文章:

linux - 如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?

linux - 递归删除文件

linux - 在 Ubuntu 中轻松更改 $JAVA_HOME

linux - 如何在没有密码的情况下以另一个用户身份运行脚本?

python - Python中的事件系统

linux - 如何强制 CIFS 连接卸载

python - 如何为 popen 指定工作目录

python - 如何用下划线替换空格?

linux - 在 Linux 上的 bash 中获取昨天的日期,DST 安全

linux - 如何在 linux 中显示来自 bash 脚本的 GUI 消息框?