2017-03-20 14 views
-1

Aと呼ばれるshape(4,2)の単純なnumpy配列を作成しました。論理インデックス - numpy.where in C++

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] 

私は2つの項目(1および2)との配列を得ましたそれは私が望んでいたものです。

これをC++で効率的にやりたいと思います。 Eigenを使ってこれを行う方法はありますか?私はループを避けたい。

ありがとうございました。

答えて

2

NumPyでforループを回避することは賞賛に値します。しかし実際には、CやFortranで実装されている低レベルのコードにループをプッシュしています。

C++でループを回避する必要はありません。反対に、ループはC++でこの問題を解決する明確かつ明白な方法です。ループを使用してください。彼らは急に燃えている。