【问题标题】:example usage of xt::where for xtensor C++xt::where 用于 xtensor C++ 的示例用法
【发布时间】:2018-06-11 18:21:08
【问题描述】:

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

谢谢。

【问题讨论】:

  • 您所描述的实际上是np.nonzero(imap >= 4),而np.where(one_arg) 是不幸的简写。

标签: numpy c++14 xtensor


【解决方案1】:

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

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

b 为真则返回数组a1 的元素,如果b 为假则返回a2 的元素。

以下示例是从文档中复制的(搜索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 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2014-01-29
    • 1970-01-01
    • 2016-10-16
    相关资源
    最近更新 更多