有一个向量 y ,如下所示:
[
1
2
4
]
我打算将其转换为以下格式,只有0和1,其中,当前行的第y个元素将设置为1:
[
1 0 0 0
0 1 0 0
0 0 0 1
]
我可以在下面的非矢量化版本中实现它,但是在矢量化版本中实现它的最有效方法是什么?谢谢!
yy = zeros(size(y, 1), num_labels);
for i=1:size(y,1),
yy(i, y(i, 1)) = 1;
end;
答案 0 :(得分:0)
使用稀疏矩阵,这也会节省大量内存,并且可以像" normal"计算中的矩阵:
y = [1 2 4];
sparse (y, y, 1)
给你
Compressed Column Sparse (rows = 4, cols = 4, nnz = 3 [19%])
(1, 1) -> 1
(2, 2) -> 1
(4, 4) -> 1
或者如果你真的想要一个完整的矩阵:
full (sparse (y, y, 1))
ans =
1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 1