Как преобразовать xarray в std :: vector? - PullRequest
2 голосов
/ 04 апреля 2020

Документы ясно показывают, как адаптировать std::vector к тензорному объекту. https://xtensor.readthedocs.io/en/latest/adaptor.html

std::vector<double> v = {1., 2., 3., 4., 5., 6. };
std::vector<std::size_t> shape = { 2, 3 };
auto a1 = xt::adapt(v, shape);

Но как вы можете сделать это наоборот?

xt::xarray<double> a2 = { { 1., 2., 3.} };
std::vector<double> a2vector = ?;

1 Ответ

1 голос
/ 05 апреля 2020

Вы можете построить std::vector из итераторов. Для вашего примера:

std::vector<double> w(a1.begin(), a1.end());

Полный пример становится:

#include <vector>
#include <xtensor/xadapt.hpp>
#include <xtensor/xio.hpp>

int main()
{
    std::vector<double> v = {1., 2., 3., 4., 5., 6.};
    std::vector<std::size_t> shape = {2, 3};
    auto a1 = xt::adapt(v, shape);
    std::vector<double> w(a1.begin(), a1.end());
    return 0;
}

Ссылки:

...