如何解决如何读取从调用 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 举报,一经查实,本站将立刻删除。