Machine learning 如何基于另一个向量将一个矩阵拆分为多个矩阵
如果 A=[1 2 3;4 5 6;7 8 9] B=[12] 我发现Machine learning 如何基于另一个向量将一个矩阵拆分为多个矩阵,machine-learning,octave,linear-algebra,Machine Learning,Octave,Linear Algebra,如果 A=[1 2 3;4 5 6;7 8 9] B=[12] 我发现 A(B==1,:)返回[123]和 A(B==2,:)返回[456;789] 因为 B==1返回[1 0]和 B==2返回[0 1] 鉴于上述A和B的示例,是否有更简单的方法在一步即不使用for循环的情况下获得最终矩阵[1 2 3]和[4 5 6;7 8 9] 目标是生成聚类的质心,在K-均值聚类问题中,每个示例(A中的行)都已分配给这些质心。我正在考虑将结果矩阵传递给mean()函数以生成质心。您可以得到一个单元格
- A(B==1,:)返回[123]和
- A(B==2,:)返回[456;789]
- B==1返回[1 0]和
- B==2返回[0 1]
目标是生成聚类的质心,在K-均值聚类问题中,每个示例(A中的行)都已分配给这些质心。我正在考虑将结果矩阵传递给mean()函数以生成质心。您可以得到一个单元格数组
A = [1 2 3; 4 5 6; 7 8 9];
B = [1 2 2];
arrayfun(@(lev) A(B==lev, :), unique(B), 'UniformOutput', false)
返回
ans =
{
[1,1] =
1 2 3
[1,2] =
4 5 6
7 8 9
}
你可以得到一个单元格数组
A = [1 2 3; 4 5 6; 7 8 9];
B = [1 2 2];
arrayfun(@(lev) A(B==lev, :), unique(B), 'UniformOutput', false)
返回
ans =
{
[1,1] =
1 2 3
[1,2] =
4 5 6
7 8 9
}
你说得到是什么意思?我可以看出你想推广这个,但不清楚你想推广到什么。是否要传入一个索引数组并返回一个数组?是的。目标是生成聚类的质心,每个示例(A中的行)已在K均值聚类问题中分配给这些质心。我正在考虑将得到的矩阵传递给mean()函数来生成质心。你说的get是什么意思?我可以看出你想推广这个,但不清楚你想推广到什么。是否要传入一个索引数组并返回一个数组?是的。目标是生成聚类的质心,每个示例(A中的行)已在K均值聚类问题中分配给这些质心。我正在考虑将结果矩阵传递给mean()函数以生成质心。谢谢。有效:-)。我不得不稍微改变一下,以获得方法。arrayfun(@(lev)表示(A(B==lev,:),1),唯一(B),‘UniformOutput’,false)谢谢。有效:-)。我不得不稍微改变一下,以获得方法。arrayfun(@(lev)平均值(A(B==lev,:),1),唯一(B),'UniformOutput',false)