2016-11-02 7 views
0

numpyを使って、私はpointsという行列を持っています。numpy行列で一致する行を見つける

points 
=> matrix([[0, 2], 
     [0, 0], 
     [1, 3], 
     [4, 6], 
     [0, 7], 
     [0, 3]]) 

私はタプル(1, 3)を持っている場合、私は(この場合には、行インデックスは2である)これらの番号が一致するpoints内の行を見つけたいです。

私はnp.whereを使用してみました:

np.where(points == (1, 3)) 
=> (array([2, 2, 5]), array([0, 1, 1])) 

この出力の意味は何ですか? (1, 3)が発生する行を見つけるために使用できますか?与えられたサンプルを使用して関与

np.where((a==(1,3)).all(axis=1))[0] 

ステップ - -

+1

Divakarは素敵な答えを与えたが、しかし、あなたはまたで見ることができますhttp://stackoverflow.com/questions/30145996/get-row-numbers-ofrows-matching-a-condition-in-numpy – Jakub

答えて

2

は、あなただけのように同じように、各列に沿ってALL matchesを探すために必要であった

In [17]: a # Input matrix 
Out[17]: 
matrix([[0, 2], 
     [0, 0], 
     [1, 3], 
     [4, 6], 
     [0, 7], 
     [0, 3]]) 

In [18]: (a==(1,3)) # Matrix of broadcasted matches 
Out[18]: 
matrix([[False, False], 
     [False, False], 
     [ True, True], 
     [False, False], 
     [False, False], 
     [False, True]], dtype=bool) 

In [19]: (a==(1,3)).all(axis=1) # Look for ALL matches along each row 
Out[19]: 
matrix([[False], 
     [False], 
     [ True], 
     [False], 
     [False], 
     [False]], dtype=bool) 

In [20]: np.where((a==(1,3)).all(1))[0] # Use np.where to get row indices 
Out[20]: array([2]) 
関連する問題