c++ - 如何读取从调用 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, 0, xt::all()) << std::endl;
}
用于以下 CSV 文件
1,2,3
4,5,6
7,8,9
印刷:
{{1, 2, 3},
{4, 5, 6},
{7, 8, 9}}
1
2
{1, 2, 3}
推荐阅读
- javascript - 有没有办法在离子应用程序中实现重试按钮?
- asp.net-core - 属性路由方法未调用
- c++ - 多维数组初始化,声明后初始化和声明后初始化有什么区别?
- node.js - 在 mongoose .d.ts 中分配自定义方法,这样我就可以在打字稿中使用 mongoose 的任何地方
- arrays - 使用枚举查找数组中的所有组合(Swift 5)
- android - 如何只请求一次权限?
- ocaml - K 框架在 OCaml 后端产生错误
- javascript - 在 react-transition-group 中放置回调函数的位置
- linux - MassTransit 无法从 Linux 连接到 Rabbit Broker,但可以从 Windows - .Net Core 2.1
- html - 如何相对于图像定位文本?