Numpy의 배열 검색 np.where 방법 상세 소개

3459 단어 Numpynp.where
numpy.where (condition[, x, y])numpy.where () 에는 다음 두 가지 방법이 있습니다.

1. np.where(condition, x, y)


조건 충족(condition), 출력 x, 출력 y 충족하지 않습니다.
만약 1차원 그룹이라면 [xv if c else yv for (c, xv, yv) in zip (condition, x, y)]

>>> aa = np.arange(10)
>>> np.where(aa,1,-1)
array([-1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) # 0 False, -1
>>> np.where(aa > 5,1,-1)
array([-1, -1, -1, -1, -1, -1, 1, 1, 1, 1])

>>> np.where([[True,False], [True,True]],  #  
  [[1,2], [3,4]],
       [[9,8], [7,6]])
array([[1, 8],
  [3, 4]])
위의 이 예의 조건은 [[True, False], [True, False]]로 각각 마지막 출력 결과에 대응하는 네 개의 값이다.첫 번째 값은 [1,9]에서 선택하고 조건이 True이기 때문에 1을 선택합니다.두 번째 값은 [2,8]에서 선택하고 조건이 False이기 때문에 8을 선택하고 그 뒤로 유추한다.이와 유사한 문제는 다음 예제를 참조하십시오.

>>> a = 10
>>> np.where([[a > 5,a < 5], [a == 10,a == 7]],
       [["chosen","not chosen"], ["chosen","not chosen"]],
       [["not chosen","chosen"], ["not chosen","chosen"]])

array([['chosen', 'chosen'],
    ['chosen', 'chosen']], dtype='<U10')

2. np.where(condition)


조건(condition)만 있고 x와 y가 없으면 조건(즉 0이 아닌) 요소를 만족시키는 좌표 (numpy.nonzero와 동일) 를 출력합니다.이곳의 좌표는tuple의 형식으로 제시된다. 보통 원수조는 몇 차원이고 출력된tuple에는 몇 개의 수조가 포함되어 있으며 각각 조건원소에 부합되는 각 차원 좌표에 대응한다.

>>> a = np.array([2,4,6,8,10])
>>> np.where(a > 5)  #  
(array([2, 3, 4]),)  
>>> a[np.where(a > 5)]   #   a[a>5]
array([ 6, 8, 10])

>>> np.where([[0, 1], [1, 0]])
(array([0, 1]), array([1, 0]))

위의 이 예 조건 중 [[0,1],[1,0]의 진가는 두 개의 1이고 각자의 1차원 좌표는 [0,1], 2차원 좌표는 [1,0]이다.
다음은 복잡한 예입니다.

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

    [[ 9, 10, 11],
    [12, 13, 14],
    [15, 16, 17]],

    [[18, 19, 20],
    [21, 22, 23],
    [24, 25, 26]]])

>>> np.where(a > 5)
(array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]),
 array([2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2]),
 array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]))

#  
  [ 6, 7, 8]],

   [[ 9, 10, 11],
    [12, 13, 14],
    [15, 16, 17]],

   [[18, 19, 20],
    [21, 22, 23],
    [24, 25, 26]]]
그래서 np.where는 모든 요소에 대응하는 좌표를 출력합니다. 원수조는 3차원이기 때문에tuple에는 세 개의 수조가 있습니다.

보충하다


np.where와 np.searchsorted는 Numpy 그룹 검색의 일부분입니다. 간단한 where를 소개합니다.

import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.where(a == 5)

print(b)

where 방법은 원조로 돌아갈 것이다

(array([4]),)
이 밖에 홀수와 짝수를 검색하는 방법도 소개할 것이다.
이를 통해 알 수 있듯이 간단하게 잔수를 판단하면 된다

c = np.where(a%2 == 0)
print(c)

d = np.where(a%2 == 1)
print(d)
반환:

(array([1, 3]),)
(array([0, 2, 4]),)
np.where 방법은 여기까지입니다.
Numpy의 그룹 검색에 대한 np입니다.where 방법에 대한 상세한 소개는 여기까지 하겠습니다.where 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기