【发布时间】:2014-12-08 08:28:31
【问题描述】:
我有一个标签向量如下:
y=[3 1 5 3 4 2];
有没有有效的方法来生成下面的标签矩阵?
[0 0 1 0 0;
1 0 0 0 0;
0 0 0 0 1;
0 0 1 0 0;
0 0 0 1 0;
0 1 0 0 0;]
更新: This post 和 this post 都是很好的答案。使用@Nras提供的脚本,以下是处理缺失标签:
Y=[3 1 5 3 4 2];
labels=unique(Y);
[~,indexes]=ismember(Y,labels);
rows = 1:length(Y); %// row indx
T = zeros(length(Y),length(unique(indexes))); %// A matrix full of zeros
T(sub2ind(size(T),rows ,indexes)) = 1; %// Ones at the desired row/column combinations
【问题讨论】:
-
次要注意:副本适用于生成矩阵,其中 列 表示非零值。只需转置结果即可获得问题中所见的行矩阵。顺便说一句,感谢您链接到我的答案@Shai :)
-
@rayryeng 这里有很多线程实际上是相同的(我什至认为我已经回答了其中一个......),但恕我直言,这个问题是最“规范的”。
-
@Shai,谢谢!您提供的帖子确实是非常好的解决方案。因为当我发这个帖子的时候,我没有检查你的帖子,所以我做了这个重复的帖子。我已经关闭了这篇文章。当我们写下帖子的标题时,也许 stackoverflow 可以改进自然语言处理技术以提供最可取的建议。
标签: matlab