【发布时间】:2020-09-02 11:57:01
【问题描述】:
我有一个矩阵,例如:
1 2
3 4
4 5
我还有一个对行进行分组的规则,它被定义为一个组 ID 的向量,如下所示:
1
2
1
这意味着第一行和第三行属于同一个组(ID 1),第二行属于另一个组(ID 2)。所以,我想计算每个组的平均值。这是我的示例的结果:
2.5 3.5
3 4
更正式地说,有一个大小为(m,n)的矩阵A,有若干组k 和一个大小为 (m, 1) 的向量 v,其值是从 1 到 k 的整数。结果是一个大小为 (k, n) 的矩阵 R,其中索引为 r 的每一行对应于r组的平均值。
这是我在 Octave 中使用 for-loop 的解决方案(可以满足我的需要):
R = zeros(k, n);
for r = 1:k
R(r, :) = mean(A((v == r), :), 1);
end
我想知道它是否可以矢量化。因此,我需要用矢量化解决方案替换 for 循环,这将比迭代解决方案更有效。
这是我以矢量化方式解决问题的众多尝试之一(但不起作用):
R = mean(A((v == 1:k), :);
【问题讨论】: