본문 바로가기

Python

Numpy 사용법 (6) - np.argmax(), np.argsort()

이번 포스팅에서는 np.argmax(), np.argsort()에 대해서 작성할 것이다. 

 

numpy를 활용하면 배열에서 가장 큰(작은) 원소, 오름(내림)차순 정렬이 가능하다. 

 

한편, np.argmax()를 이용하면 배열에서 가장 큰 원소의 index를 반환할 수 있다.

 

아래 예제 코드를 통해서 알아보자.

 

☞ np.argmax() 예제 코드

import numpy as np
tmp = np.array([1,3,2,5,9,8,7])
tmp1 = np.array([[10,11,12],[102,100,101]])
print(tmp)
tmp_max = np.argmax(tmp)            # 배열 tmp에서 가장 큰 원소의 index를 반환, '9'의 index를 반환
print(tmp_max)
print()
print(tmp1)
tmp1_max = np.argmax(tmp1)          # 배열 tmp1에서 가장 큰 원소의 index를 반환, '102'의 index를 반환
print(tmp1_max)

 

☞ np.argmax() 예제 코드 실행 결과

[1 3 2 5 9 8 7]
4

[[ 10 11 12]
 [102 100 101]]
3

 

np.argmax()를 이용해서 행 및 열단위로 인덱스를 반환할 수도 있다.

 

아래 예제를 통해서 알아보자. 

 

☞ np.argmax() 행 및 열 단위로 인덱스 반환 예제 코드

a = np.array([[1,12,13],[102,1000,101],[40,300,500]])
print(a)
a_col = np.argmax(a, axis=0).   # 배열에서 열단위로 가장 큰 값을 갖는 index를 반환
                                                         # 예를 들어, [1,102, 40]중 가장큰 102의 index인 1을 반환,
                                                         # 이어서 [12, 1000, 300] 중 가장 큰 1000의 index인 1을 반환
print()
print(a_col)
a_row = np.argmax(a, axis=1)    # 배열에서 행 단위로 가장 큰 값을 갖는 index를 반환
                                                       # 예를 들어, [1,12, 13]중 가장 큰 13의 index인 2을 반환,
                                                       # 이어서 [102, 1000, 101] 중 가장 큰 1000의 index인 2을 반환
print()
print(a_row)

 

☞ np.argmax() 행 및 열 단위로 인덱스 반환 예제 코드 실행 결과

[[ 1 12 13]
  [ 102 1000 101]
  [ 40 300 500]]

[1 1 2]

[2 1 2]

 

지금까지 np.argmax()의 간단한 예제를 살펴보았다.  

 

np.argmin()은 np.argmax()와 다르게 가장 작은 원소의 인덱스를 반환하며, 사용방법은 np.argmax()와 비슷하다. 

 

다음은 np.argsort()에 대해서 알아보겠다.

 

np.argsort()는 배열을 정렬했을때, 배열된 원소의 인덱스를 반환한다. 

 

아래 예제를 보면 쉽게 이해할 수 있을 것이다. 

 

☞ np.argsort() 예제 코드

a = np.array([6,3,9,1,2,0])
a_sort = np.argsort(a)    # 배열 a에서 작은 숫자의 순서대로 그 index를 반환
                                          # 예를 들어, 배열 a의 원소를 정렬하면 [0,1,2,3,6,9]이며 각 숫자에 대응되는 index는 [5,3,4,1,0,2]
print(a_sort)

 

☞ np.argsort() 예제 코드 실행 결과

[5 3 4 1 0 2]

 

np.argsort()는 2차원 배열에 대해서도 적용 가능하다.

 

아래 예제를 통해서 알아보자. 

 

☞ np.argsort() 2차원 배열 예제 코드

a_2d = np.array([[0,3,2],[2,1,9],[5,4,0]])
print(a_2d)
print()
a_2d_col = np.argsort(a_2d, axis=0)  # 배열 a_2를 기준으로 열 단위로 정렬했을 때 index를 반환.
                                                                 # ex) 두번째 열은 [3,1,4]이며 이를 정렬하면 [1,3,4]임. 그리고 이때 index는 [1,0,2]
print(a_2d_col)
print()
a_2d_row = np.argsort(a_2d, axis=1) # 배열 a_2를 기준으로 행 단위로 정렬했을 때 index를 반환.
                                                                # ex) 세번째 행은 [5,4,0]이며 이를 정렬하면 [0,4,5]임. 그리고 이때 index는 [2,1,0]
print(a_2d_row)

 

☞ np.argsort() 2차원 배열 예제 코드 실행 결과

[[0 3 2]
 [2 1 9]
 [5 4 0]]

[[0 1 2]
 [1 0 0]
 [2 2 1]]

[[0 2 1]
 [1 0 2]
 [2 1 0]]

 

 

'Python' 카테고리의 다른 글

CPLEX - Python API  (0) 2022.06.23
Numpy 사용법 (5) - np.where()  (2) 2022.04.22
Numpy 사용법 정리(4)  (0) 2022.04.21
Numpy 사용법 정리(3)  (0) 2022.04.21
Numpy 사용법 정리(2)  (0) 2022.04.20