У меня вопрос по поводу библиотеки Eigen.Я хочу вычислить минимум (или сумму) элементов вектора (скажем, v
) при группировке этих элементов в зависимости от другого вектора (скажем, i
), который определяет группы значений.
Eigen::vectorXd v(10); // values
v.setLinSpaced(10,1,10); // 1, 2, ...10
Eigen::vectorXi i(10); // labels
i << 1, 1, 1, 2, 2, 2, 3, 3, 3, 3; // 3 different groups with label 1, 2 or 3
Я хочу выполнить групповую или индексную операцию, т.е. получить минимум для групп значений в v
, которые определены в i
: минимум значений в v
, соответствующий индексам записей в i
равно 1, то же самое для записей в i
равно 2
и для записей в i
равно 3.
Eigen::vectorXd m(3); // group-wise min (here I have 3 groups)
m = v.XXXX(i); // what I want: 1, 4, 7 given by function XXXX
Другими словами, я ищу эквивалентtapply
функция в R (https://stat.ethz.ch/R-manual/R-patched/library/base/html/tapply.html).
В настоящее время я делаю это вручную, извлекая значения в v
для каждой группы в i
. Надеемся, что существует другой способ.
Заранее спасибо
Редактировать: Если существует метод, чтобы я мог просто извлечь значения в v
, для которых записи в i
равны 1 (или 2 или 3)Это было бы отличным началом.