문서 , 이 게시물 및 다른 게시물을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
때 a
2 차원 배열 인, 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])
a
1d 일 때 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]