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

标签 python c++ numpy eigen

我创建了一个形状为 (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/

相关文章:

python - python 中的 command.getstatusoutput() 缓冲区是否有限制

c++ - 删除指针

c++ - CMake 找不到源文件(add_executable)

c++ - 是否可以编写这些 pure_assert 和 const_assert 宏?

python - 在python中读取时将文本的所有值转换为int

python - 为什么这个 PIL 调用会使 python 崩溃?

python - 确定两个 numpy 数组在 Python 中相交的参数

python - Django:表单验证接受首字母大写的字符串

python - Scrapyd 和单蜘蛛的并行/性能问题

python - 我可以更改给定 celery 任务的 ETA 参数吗?