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

如何使用numpy向量化操作将1D标签数组转换为独热编码2D数组

Numpy向量化实现标签转独热编码方案

你要实现的功能本质是生成分类任务常用的独热(One-Hot)编码,用Numpy高级索引就可以完全替代循环实现向量化操作,性能远高于Python层面的遍历。


实现代码

import numpy as np

# 支持输入Python列表或者Numpy数组格式的labels
labels = [1, 5, 3, 9, 4]
# 初始化全零数组,维度为(样本数,类别数10)
y_train = np.zeros((len(labels), 10), dtype=np.float64)
# 高级索引批量赋值
y_train[np.arange(len(labels)), labels] = 1.0

逻辑说明

  • 核心利用了Numpy的整数数组索引特性,同时传入行索引数组np.arange(len(labels))(对应每个样本的行号)和列索引数组labels(对应每个样本需要置1的列号),就能一次性对所有匹配的位置批量赋值,全程没有Python层面的循环,所有运算都在Numpy底层C语言层面执行,数据量越大性能优势越明显,万级以上样本量时性能比for循环高几十到上百倍。
  • 输出结果和你原有循环实现的结果完全一致:
array([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
       [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],
       [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 08:24:06