首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xtensor:选择具有特定列值的行

xtensor:选择具有特定列值的行
EN

Stack Overflow用户
提问于 2019-11-05 18:42:45
回答 1查看 196关注 0票数 2

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

代码语言:javascript
复制
[ 
  [0, 1, 1, 3, 4 ]
  [0, 2, 1, 5, 6 ]
  [0, 3, 1, 3, 2 ]
  [0, 4, 1, 5, 7 ]
]

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

代码语言:javascript
复制
  [0, 3, 1, 3, 2 ]

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

如何在xtensor中实现这一点

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-13 18:20:03

方法是对所需的列进行切片,然后查看所有列的条件为真的位置。

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

代码语言:javascript
复制
#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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58709642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档