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

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

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



답변

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

직관적으로 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이므로 후자는 빈 배열입니다.


답변

좀 더 재미있다. 나는 종종 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]


답변