2014-01-22 2 views
3

게시물 Difference between nonzero(a), where(a) and argwhere(a). When to use which?을 보았고 numpy 모듈에서 where 함수의 사용법을 이해하지 못했습니다.numpy의 기본 기능 where 함수는 배열에 어떤 영향을 줍니까?

(array([0, 0, 0, 1, 2, 2, 3, 3, 4], dtype=int64), 
array([0, 2, 3, 3, 1, 3, 2, 3, 1], dtype=int64)) 

함수이고 정의 : 중, X 또는 Y의 반송 요소를, 상태에 따라

는 예를 들어 I는 범 코드

import numpy as np 

Z =np.array( 
    [[1,0,1,1,0,0], 
    [0,0,0,1,0,0], 
    [0,1,0,1,0,0], 
    [0,0,1,1,0,0], 
    [0,1,0,0,0,0], 
    [0,0,0,0,0,0]]) 
print Z 
print np.where(Z) 

을 갖는다. 그러나 나에게도 의미가 없습니다.

출력은 정확히 무엇을 의미합니까?

+1

'np.where (condition, x, y)'로 호출하면 인용 한 내용이 수행됩니다. 'x'와'y'를 생략하면 인수는'np.nonzero'와 같습니다. – Jaime

답변

2

np.where은 주어진 조건이 충족되는 색인을 반환합니다. 귀하의 경우 Z의 값이 0이 아닌 색인을 요청합니다 (예 : Python에서는 0이 아닌 값을 True으로 간주합니다). 어떤에서 Z 결과 :

(0, 0) # top left 
(0, 2) # third element in the first row 
(0, 3) # fourth element in the first row 
(1, 3) # fourth element in the second row 
... # and so on 

np.where 시작 다음과 같은 경우에 이해하기 : 도움이

a = np.arange(10) 
np.where(a > 5) # give me all indices where the value of a is bigger than 5 
# a > 5 is a boolean mask like [False, False, ..., True, True, True] 
# (array([6, 7, 8, 9], dtype=int64),) 

희망을.

+0

numpy.where는 전체 배열을 반복합니까? – Rosenthal

관련 문제