2017-03-20 51 views
-1

我创建了一个形状为(4,2)的简单numpy数组,名为A逻辑索引 - 在C++中的numpy.where

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做到这一点?我想避免循环。

谢谢。

回答

2

在NumPy中避免for循环令人钦佩。但事实上,您在这里所做的只是将循环下推到用C或Fortran实现的低级代码中。

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