我正在尝试将以下 Matlab 逻辑索引模式转换为 Scala 代码:
% x is an [Nx1] array of Int32
% y is an [Nx1] array of Int32
% myExpensiveFunction() processes batches of unique x.
ux = unique(x);
z = nan(size(x));
for i = 1:length(ux)
idx = x == ux(i);
z(idx) = myExpensiveFuntion(x(idx), y(idx));
end
假设我正在使用val x: Array[Int]
Scala。做这个的最好方式是什么?
编辑:为了澄清,我希望一次处理一批(x,y),按唯一x分组,并返回一个结果(z),其顺序对应于初始输入。我愿意对 x 进行排序,但最终需要回到原始的未排序顺序。我的主要要求是以清晰且合理有效的方式处理所有索引/映射/排序。