2
4

2 回答 2

2

您可以使用xt::equal(a, b)而不是a == b. IE

xt::filter(a, xt::equal(a, 2)) = 10;

做你想做的事。

于 2021-07-30T10:03:46.680 回答
1

xtensor 提供逻辑运算符,如&&and ||。将这些与允许的比较相结合会产生与 '==' 或 '!=' 所期望的相同的输出。

特别是a >= 2 && a <= 2<=>a == 2a > 2 || a < 2<=>a != 2

所以我的最终程序是

#include <iostream>

#include "xtensor/xadapt.hpp"
#include "xtensor/xarray.hpp"
#include "xtensor/xindex_view.hpp"
#include "xtensor/xio.hpp"
#include "xtensor/xmasked_view.hpp"
#include "xtensor/xview.hpp"

using namespace std;

int main() {
    xt::xarray<float> a = {{1, 2, 3}, {4, 2, 6}, {9, 0, 2}};
    cout << a << endl;
    xt::filter(a, a >= 2 && a <= 2) = 10;
    cout << a << endl;
}

它的输出是

{{ 1.,  2.,  3.},
 { 4.,  2.,  6.},
 { 9.,  0.,  2.}}
{{  1.,  10.,   3.},
 {  4.,  10.,   6.},
 {  9.,   0.,  10.}}
于 2021-07-29T22:55:38.913 回答