xxtor C ++的xt :: where的示例用法

时间:2018-06-11 18:21:09

标签: numpy c++14 xtensor

我是xtensor的新手。我想知道如何使用xt :: where的输出。在python中,例如假设imap是一个nd数组, np.where(imap> = 4)返回带索引的两个数组,可以使用=运算符直接赋值。请让我知道如何在xtensor C ++上下文中使用它。任何小例子都会有很大的帮助。

感谢。

1 个答案:

答案 0 :(得分:5)

返回输入类型的xt :: xarray。

xt::xarray<int> res = xt::where(b, a1, a2);

b为true,如果a1b,则返回a2的{​​{1}}元素。

以下示例是从文档中复制的(搜索xt::wherehttp://xtensor.readthedocs.io/en/latest/operator.html

b的第一个元素是false - 所以从a2 - 11

获取它

b的第二个元素是true - 所以从a1得到它 - 2

b的第三个元素是true - 所以从a1得到它 - 3

b的第四个元素是false - 所以从a2得到它 - 14

xt::xarray<bool> b = { false, true, true, false };
xt::xarray<int> a1 = { 1,   2,  3,  4 };
xt::xarray<int> a2 = { 11, 12, 13, 14 };

xt::xarray<int> res = xt::where(b, a1, a2);
// => res = { 11, 2, 3, 14 }