簡體   English   中英

xtensor:具有特定列值的 Select 行

[英]xtensor: Select rows with specific column values

我正在玩xtensor ,我只想對具有特定列值的 select 行執行一個簡單的操作。 想象一下我有以下數組。

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

現在我想 select col2col4值為 3 的行。在這種情況下是row 3

  [0, 3, 1, 3, 2 ]

我想達到類似於這個答案所達到的效果

我怎樣才能在xtensor中實現這一點?

go 的方法是用您需要的列進行切片,然后查看所有列的條件在哪里成立。

對於后者, 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM