2016-11-02 4 views
0

numpy를 사용하면 points이라는 행렬이 있습니다. 내가 튜플 (1, 3)이있는 경우numpy 행렬에서 일치하는 행 찾기

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

, 나는이 숫자를 일치 points의 행 찾으려면 (이 경우, 행 인덱스 2).

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

이 출력의 의미는 무엇입니까 :

나는 np.where를 사용하여 시도? (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]) 
관련 문제