我创建了一个简单的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做到这一点?我想避免循环。
感谢。
答案 0 :(得分:2)
在NumPy中避免for
循环是令人钦佩的。但实际上你所做的就是将循环推进到用C或Fortran实现的低级代码。
根本不需要避免C ++中的循环。相反,循环是在C ++中解决这个问题的明确而明显的方法。所以使用循环。他们的速度很快。