gpt4 book ai didi

c++ - xtensor:选择具有特定列值的行

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:46 24 4
gpt4 key购买 nike

我正在玩弄 xtensor,我只是想执行一个简单的操作来选择具有特定列值的行。假设我有以下数组。

[ 
[0, 1, 1, 3, 4 ]
[0, 2, 1, 5, 6 ]
[0, 3, 1, 3, 2 ]
[0, 4, 1, 5, 7 ]
]

现在我想选择 col2col4 值为 3 的行。在本例中是 第 3 行

  [0, 3, 1, 3, 2 ]

我想实现类似于this answer has achieved的东西.

如何在 xtensor 中实现这一点?

最佳答案

方法是用您需要的列进行切片,然后查看所有列的条件是否为真。

对于后者,xt::all(...) 的重载似乎还没有实现(还!),但我们可以使用 xt::sum(..., axis) 实现同样的效果:

#include <xtensor/xtensor.hpp>
#include <xtensor/xview.hpp>
#include <xtensor/xio.hpp>

int main()
{
xt::xtensor<int,2> a =
{{0, 1, 1, 3, 4},
{0, 2, 1, 5, 6},
{0, 3, 1, 3, 2},
{0, 4, 1, 5, 7}};

auto test = xt::equal(xt::view(a, xt::all(), xt::keep(1, 3)), 3);
auto n = xt::sum(test, 1);
auto idx = xt::flatten_indices(xt::argwhere(xt::equal(n, 2)));

auto b = xt::view(a, xt::keep(idx), xt::all());

std::cout << b << std::endl;

return 0;
}

关于c++ - xtensor:选择具有特定列值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com