逻辑索引 - 在C ++中的numpy.where

时间:2017-03-20 13:09:44

标签: python c++ numpy eigen

我创建了一个简单的numpy数组,其形状(4,2)称为A

import numpy as np
A = np.array([[1, 2], 
              [2, 2],  
              [3, 2], 
              [4, 2]]) 

我想得到第一列为2和3的行的索引,所以我做了:

indices = np.where((A[:, 0] == 2) | (A[:, 0] == 3))[0]

这样做我得到了一个包含两个项目(1和2)的数组,这就是我想要的。

现在我想在C ++中高效地完成这项工作。有没有办法用Eigen做到这一点?我想避免循环。

感谢。

1 个答案:

答案 0 :(得分:2)

在NumPy中避免for循环是令人钦佩的。但实际上你所做的就是将循环推进到用C或Fortran实现的低级代码。

根本不需要避免C ++中的循环。相反,循环是在C ++中解决这个问题的明确而明显的方法。所以使用循环。他们的速度很快。