我创建了一个形状为 (4, 2) 的简单 numpy 数组,名为 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 来做到这一点?我想避免 for 循环。
谢谢。
最佳答案
在 NumPy 中避免 for
循环是令人钦佩的。但实际上,您所做的只是将循环下推到用 C 或 Fortran 实现的较低级别的代码中。
在 C++ 中根本不需要避免循环。相反,循环是在 C++ 中解决此问题的明确方法。所以使用循环。他们的速度非常快。
关于python - 逻辑索引 - C++ 中的 numpy.where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42904470/