【发布时间】:2020-05-18 15:13:55
【问题描述】:
我有矢量
Eigen::VectorXf test(4);
test << 1.231, 1.23, 0.41, 1.233;
我正在尝试获取test.array() > 1 的索引。我希望结果是数组形式(std::vector 很好),并且我想利用特征优化(即 没有不必要的 for 循环)。结果应为 {0, 1, 3}。我该怎么做呢?
编辑
我收到了一个类似Eigen Indices of Dense Matrix meeting Condition的问题
但主要区别在于我使用的是向量,因此一切都基于一维
编辑 2
这里的参考是我将如何在 xtensor 中做同样的事情
auto indexes = xt::flatten_indices(xt::argwhere(xt::greater(xt::flatten(data), 1)));
【问题讨论】:
-
@AskoldIlvento 在我的例子中,它是一个向量。
-
cplusplus.com/reference/functional/greater - 然后只打印 1 或 0 而不是排序?
-
@MichaelDorgan 我正在尝试获取索引,而不是值
-
然后在 foreach 循环中运行它并将索引的真/假存储在另一个数组中?或者你需要更紧凑的东西?从您的输出来看,您似乎只想要一个真/假数组。如果您想要一个索引数组,请更新问题。