我想根据表中某一列中的匹配单元格读取 2D xtensor 表的一个单元格。
考虑 std::string 类型元素的二维表:
+-----+---+---+---+
| fee | I | J | K |
+-----+---+---+---+
| fie | L | M | N |
+-----+---+---+---+
| fo | O | P | Q |
+-----+---+---+---+
| fum | R | S | T |
+-----+---+---+---+
我想读取第一列 == 'fo' 的行中第三个单元格的值,即 'P'
在互联网上搜索建议使用函数 xt::keep() 的代码,但该函数似乎未实现。如何使用实际实现的 xt 函数来执行此操作?
最佳答案
您可以检查数组中的哪个位置有等于“fo”的元素。在本例中,结果将是索引 {2, 0}。您可以使用该索引的第一个元素 (2) 和所需的列索引 (2) 并在所需位置获取数组 View 。
像这样:
#include <xtensor/xtensor.hpp>
#include <xtensor/xio.hpp>
#include "xtensor/xview.hpp"
int main()
{
xt::xarray<std::string> arr{{"fee", "i", "j", "k"},
{"fie", "l", "m", "n"},
{"fo", "o", "p", "q"},
{"fum", "r", "s", "t"}};
auto indices = xt::where(xt::equal(arr, std::string("fo"))) // indices = {{2}, {0}}
auto result = xt::view(arr, xt::keep(indices[0]), xt::keep(2)) // result = {"p"}
std::cout << result << std::endl;
return 0;
}
关于visual-c++ - 根据列值在 2D 伸量表中查找单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67767711/