You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy中0-9数值转10位标记数组的转换名称及原生实现方法

问题解答

转换的官方名称

该操作的标准官方名称是独热编码(One-Hot Encoding,也叫一位有效编码),是特征预处理领域的常规操作,主要用于将离散的类别值转换为固定长度的数值向量,方便后续输入到机器学习模型中使用。

Numpy无循环实现方案

完全可以通过Numpy原生的索引能力实现,不需要手动编写Python层面的循环,以下提供两种常用实现方式:

方式1:高级索引赋值(性能更优,适合大数组)

import numpy as np
a = np.array([5, 2, 7])
num_classes = 10
# 初始化全0矩阵
b = np.zeros((a.shape[0], num_classes))
# 批量赋值对应位置为1,底层执行无Python循环
b[np.arange(a.shape[0]), a] = 1

执行后得到的b和你用循环得到的结果完全一致。

方式2:单位矩阵索引(写法更简洁)

import numpy as np
a = np.array([5, 2, 7])
num_classes = 10
b = np.eye(num_classes)[a]

该方法利用单位矩阵的特性:np.eye(num_classes)生成的第k行恰好是k对应的独热向量,直接用数组a作为索引取对应行即可得到结果。


内容的提问来源于stack exchange,提问作者Toothery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:54:04