微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何读取从调用 xt::load_csv() 返回的 xtensor 'xexpression' 对象的元素?

如何解决如何读取从调用 xt::load_csv() 返回的 xtensor 'xexpression' 对象的元素?

我的代码是:

#include <istream>
#include <fstream>
#include <xtensor/xcsv.hpp>

int main()
{
    std::ifstream in_file; 
    in_file.open("csv_file.csv"); 
    auto data = xt::load_csv<std::string>(in_file); 

    return 0;
}

当我在 IDE 中检查 xt::xexpression 对象 data 时,它看起来尺寸和填充正确,但我找不到在代码中读取其元素的方法

在仔细阅读 xtensor 文档后,我并不明智......也许一个指向 xtensor 的好介绍的指针可能会回答这个问题。

解决方法

阅读后,data 只是一个 xarray:一个多维数组,或者在 CSV 的情况下通常是一个矩阵。在矩阵上,您可以像在 NumPy 中那样进行操作。例如:

  • << 允许您打印。
  • operator()(...) 允许您使用行和列索引获取项目。
  • xt::view(data,...) 允许您获取“切片”。

更具体地说,请考虑以下示例:

#include <istream>
#include <fstream>
#include <iostream>
#include <xtensor/xarray.hpp>
#include <xtensor/xview.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xcsv.hpp>

int main()
{
    std::ifstream in_file;
    in_file.open("csv_file.csv");
    auto data = xt::load_csv<int>(in_file);

    std::cout << data << std::endl;
    std::cout << data(0,0) << std::endl;
    std::cout << data(0,1) << std::endl;
    std::cout << xt::view(data,xt::all()) << std::endl;
}

对于以下 CSV 文件

1,2,3
4,5,6
7,8,9

印刷品:

{{1,3},{4,6},{7,9}}
1
2
{1,3}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。