Как преобразовать результат выражения xt :: sum в целое число - PullRequest
0 голосов
/ 11 октября 2019

Я только начинаю с xtensor и уже застрял в основной проблеме.

Я использую что-то вроде xt::sum(xt::where(egoLaneLeftCount, 1, 0)) для суммирования столбца и получения единственного целочисленного значения. Я хочу сохранить это целочисленное значение в переменную, но получаю следующее compilation error.

xt::xreducer<xt::xreducer_functors<std::plus<long long int>, xt::const_value<long long int>, std::plus<long long int> >, xt::xfunction<xt::detail::conditional_ternary, const xt::xarray_container<xt::uvector<bool, std::allocator<bool> >, (xt::layout_type)1, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::xtensor_expression_tag>&, xt::xscalar<int>, xt::xscalar<int> >, xt::svector<long unsigned int, 4, std::allocator<long unsigned int>, true>, xt::reducer_options<long long int, std::tuple<xt::evaluation_strategy::lazy_type> > >

Любое тело имеет представление о том, как преобразовать результат этого типа данных в int?

1 Ответ

1 голос
/ 16 октября 2019

xt :: sum вернет «тип xtensor» ( xexpression ). В нем говорится, что «Значения вычисляются только при доступе или когда выражение присваивается контейнеру». Следовательно, чтобы получить желаемое значение, попробуйте следующее:

xt::xtensor<double, 1> egoLaneLeftCount = { 1, 1, 1, 0, 0 };
int x = xt::sum(xt::where(egoLaneLeftCount, 1, 0))[0];
...