我有两个向量
data vector: A = [1 2 2 1 2 6; 2 3 2 3 3 5]
label vector: B = [1 2 1 2 3 NaN]
Run Code Online (Sandbox Code Playgroud)
我想取所有具有相同标签的列的平均值,并将它们输出为按标签号排序的矩阵,忽略NaN.所以,在这个例子中我想要:
labelmean(A,B) = [1.5 1.5 2; 2 3 3]
Run Code Online (Sandbox Code Playgroud)
这可以通过像这样的for循环来完成.
function out = labelmean(data,label)
out=[];
for i=unique(label)
if isnan(i); continue; end
out = [out, mean(data(:,label==i),2)];
end
Run Code Online (Sandbox Code Playgroud)
但是,我正在处理包含许多数据点和标签的巨大数组.此外,此代码段将经常执行.我想知道是否有更有效的方法来做到这一点,而不是遍历每个单独的标签.