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
相关产品推荐
相关产品推荐

