visual-c++ - 根据列值在 2D 伸量表中查找单元格

标签 visual-c++ xtensor

我想根据表中某一列中的匹配单元格读取 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/

相关文章:

c++ - 如何使用指针用数据填充 xtensor 数组

python - xtensor 和 xsimd : improve performance on reduction

c++ - xtensor xt::where与索引相关的功能出现问题

c++ - 在内联汇编中使用命名空间

string - c# : how to convert c# string to c++ wstring and vice-versa

windows - 如何处理 Windows CE 中的控制台关闭?

python - 如何创建使用 pybind 创建的 python 包?

c++ - 我无法读取空格并使用 devc++ 在 c++ 中输入

visual-studio - 有没有一个工具可以自动将make文件转换为sln/vcproj?

c++ - 选择 2D xtensor 的特定行