답변:
잠시 동안 둘러 본 후, 나는 물건을 알아 내고 다른 사람들을 도울 것이라고 기대하면서 여기에 게시하고 있습니다.
직관적으로 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이므로 후자는 빈 배열입니다.
np.where(2d_array)
주셔서 감사합니다! 당신은 당신의 자신의 대답을 받아 들여야합니다. e : 아, 닫혔습니다. 글쎄, 안
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의 어떤 요소가 선택되는지 확인하십시오
condition
,이 기능 만 제공되는 경우이 기능은 줄임말입니다 np.asarray(condition).nonzero()
.
좀 더 재미있다. 나는 종종 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]