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

MATLAB中如何将独热(onehot)数组转换为整数数组?

在MATLAB中将独热数组转换为整数数组

嘿,这事儿好办!先明确下你的需求:你有一个一维独热数组Y = [1 0 0 0 1 0 0 1 0],它其实是3个3维的独热编码块(每3个元素对应一个类别),要把每个块转换成对应的类别索引,最终得到new_y = [1 2 2]对吧?

下面直接上实用的MATLAB代码,一步到位:

Y = [1 0 0 0 1 0 0 1 0];
% 第一步:把一维的独热数组重塑为3行3列的矩阵,每列对应一个独热编码向量
Y_reshaped = reshape(Y, 3, 3);
% 第二步:找出每列中最大值(也就是独热里的1)所在的行索引,就是类别整数
[~, new_y] = max(Y_reshaped, [], 1);

代码解释:

  • reshape(Y, 3, 3):把原来的1×9向量转换成3行3列的矩阵,这样每一列就对应一个完整的独热编码(比如第一列是[1;0;0],对应类别1;第二列[0;1;0]对应类别2,以此类推)。
  • max(Y_reshaped, [], 1):这个函数会沿着行维度(也就是对每一列)计算最大值,第二个返回值new_y就是最大值所在的行号——正好就是我们要的类别整数。因为独热编码里只有一个1,所以这个行号就是正确的类别索引。

运行这段代码后,new_y就会是你想要的[1 2 2]啦!

内容的提问来源于stack exchange,提问作者Herman Wilén

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:54:19