numpy.where () 자세한 단계별 설명 / 예 [닫기]


168

문서 , 이 게시물다른 게시물을numpy.where() 읽었음에도 불구하고 제대로 이해하는 데 어려움 있습니다.

누군가가 1D 및 2D 배열로 단계별 주석이 달린 예제를 제공 할 수 있습니까?

답변:


271

잠시 동안 둘러 본 후, 나는 물건을 알아 내고 다른 사람들을 도울 것이라고 기대하면서 여기에 게시하고 있습니다.

직관적으로 np.where" 이 배열에서 항목이 주어진 조건을 만족시키는 지 알려주십시오 " 라고 묻는 것과 같습니다 .

>>> a = np.arange(5,10)
>>> np.where(a < 8)       # tell me where in a, entries are < 8
(array([0, 1, 2]),)       # answer: entries indexed by 0, 1, 2

조건을 만족하는 항목을 배열로 가져 오는 데 사용할 수도 있습니다.

>>> a[np.where(a < 8)] 
array([5, 6, 7])          # selects from a entries 0, 1, 2

a2 차원 배열 인, np.where()행 IDX의 배열하고, COL IDX의 배열을 반환합니다 :

>>> a = np.arange(4,10).reshape(2,3)
array([[4, 5, 6],
       [7, 8, 9]])
>>> np.where(a > 8)
(array(1), array(2))

1d 경우와 마찬가지로 np.where()조건을 만족하는 2d 배열의 항목을 가져 오는 데 사용할 수 있습니다 .

>>> a[np.where(a > 8)] # selects from a entries 0, 1, 2

배열 ([9])


a1d 일 때 np.where()행 idx 및 col idx 배열을 반환하지만 열 길이는 1이므로 후자는 빈 배열입니다.


10
"a가 2d 배열 인 경우 np.where ()는 행 idx의 배열과 col idx의 배열을 반환합니다."라는 답을 찾을 때까지 2d에서 사용될 때 np.where를 이해하는 데 어려움을 겪고있었습니다. 고마워
bencampbell_14

1
나는 의사를 세 번 읽은 후에도 어리석은 느낌이 들었지만 여전히 퍼즐을 풀지 못했습니다.이 문제를 해결해 np.where(2d_array)주셔서 감사합니다! 당신은 당신의 자신의 대답을 받아 들여야합니다. e : 아, 닫혔습니다. 글쎄, 안
smcs

5
이것이 폐쇄 된 것은 부끄러운 일입니다. 그러나 나는 np.where그렇지 않으면 완전한 대답에 다른 기능을 추가하고 싶습니다 . 이 기능은 조건에 따라 x 및 y 배열에서 요소를 선택할 수도 있습니다. 이 주석에는 공간이 제한되어 있지만 참조 : np.where(np.array([[False,False,True], [True,False,False]]), np.array([[8,2,6], [9,5,0]]), np.array([[4,8,7], [3,2,1]]))will return array([[4, 8, 6], [9, 2, 1]]). True / False에 따라 x와 y의 어떤 요소가 선택되는지 확인하십시오
piccolo

이 답변에 제공된 설명은 np.where의 특별한 경우입니다. 설명서에 따르면 condition,이 기능 만 제공되는 경우이 기능은 줄임말입니다 np.asarray(condition).nonzero().
레니

19

좀 더 재미있다. 나는 종종 NumPy가 내가 원하는 것을 정확하게 수행한다는 것을 알았습니다. 때로는 문서를 읽는 것보다 일을 시도하는 것이 더 빠릅니다. 실제로 둘의 혼합이 가장 좋습니다.

나는 당신의 대답이 괜찮다고 생각합니다 (그리고 원한다면 받아도 괜찮습니다). 이것은 단지 "추가"입니다.

import numpy as np

a = np.arange(4,10).reshape(2,3)

wh = np.where(a>7)
gt = a>7
x  = np.where(gt)

print "wh: ", wh
print "gt: ", gt
print "x:  ", x

제공합니다 :

wh:  (array([1, 1]), array([1, 2]))
gt:  [[False False False]
      [False  True  True]]
x:   (array([1, 1]), array([1, 2]))

...하지만 :

print "a[wh]: ", a[wh]
print "a[gt]  ", a[gt]
print "a[x]:  ", a[x]

제공합니다 :

a[wh]:  [8 9]
a[gt]   [8 9]
a[x]:   [8 9]

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.