我是xtensor的新手。我想知道如何使用xt :: where的输出。在python中,例如假设imap是一个nd数组, np.where(imap> = 4)返回带索引的两个数组,可以使用=运算符直接赋值。请让我知道如何在xtensor C ++上下文中使用它。任何小例子都会有很大的帮助。
感谢。
答案 0 :(得分:5)
返回输入类型的xt :: xarray。
xt::xarray<int> res = xt::where(b, a1, a2);
b
为true,如果a1
为b
,则返回a2
的{{1}}元素。
以下示例是从文档中复制的(搜索xt::where
)
http://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 }