次の 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でグループ化された(x、y)のバッチを一度に処理し、初期入力に対応する順序で結果(z)を返すことを検討しています。私は x を並べ替えても構いませんが、最終的には元の並べ替えられていない順序に戻す必要があります。私の主な要件は、すべてのインデックス作成/マッピング/並べ替えを明確かつ合理的に効率的な方法で処理することです。