본문 바로가기
파이썬

파이썬 numpy : argmin () 및 argmax () 함수의 논리는 무엇입니까?

by º기록 2020. 11. 29.
반응형

axis 매개 변수와 함께 사용할 때 argmax argmin 의 출력을 이해할 수 없습니다. 예를 들면 :

>>> a = np.array([[1,2,4,7], [9,88,6,45], [9,76,3,4]])
>>> a
array([[ 1,  2,  4,  7],
       [ 9, 88,  6, 45],
       [ 9, 76,  3,  4]])
>>> a.shape
(3, 4)
>>> a.size
12
>>> np.argmax(a)
5
>>> np.argmax(a,axis=0)
array([1, 1, 1, 1])
>>> np.argmax(a,axis=1)
array([3, 1, 1])
>>> np.argmin(a)
0
>>> np.argmin(a,axis=0)
array([0, 0, 2, 2])
>>> np.argmin(a,axis=1)
array([0, 2, 2])

보시다시피 최대 값은 포인트 (1,1)이고 최소값은 포인트 (0,0)입니다. 그래서 내가 실행할 때 내 논리에서 :

내가 사물을 이해하는 데 문제가 있습니까?

 

해결 방법

 

axis 인수를 추가하여 NumPy는 행과 열을 개별적으로 확인합니다. 지정되지 않으면 배열 a 는 단일 1D 배열로 평면화됩니다.

axis = 0 은 작업이 차례로 2D 배열 a 의 열 아래로 수행됨을 의미합니다.

예를 들어 np.argmin (a, axis = 0) 은 4 개 열 각각에서 최소값의 인덱스를 반환합니다. 각 열의 최소값은 아래 굵게 표시됩니다.

>>> a
array([[ 1,  2,  4,  7],  # 0
       [ 9, 88,  6, 45],  # 1
       [ 9, 76,  3,  4]]) # 2

>>> np.argmin(a, axis=0)
array([0, 0, 2, 2])

반면에 axis = 1 은 작업이 a 의 행 에서 수행됨을 의미합니다.

즉, a 에는 3 개의 행이 있으므로 np.argmin (a, axis = 1) [0, 2, 2] 를 반환합니다. 첫 번째 행의 최소값 인덱스는 0이고 두 번째 및 세 번째 행의 최소값 인덱스는 2입니다.

>>> a
#        0   1   2   3
array([[ 1,  2,  4,  7],
       [ 9, 88,  6, 45],
       [ 9, 76,  3,  4]])

>>> np.argmin(a, axis=1)
array([0, 2, 2])

 

참조 페이지 https://stackoverflow.com/questions/28697993

 

 

반응형

댓글