| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 27 | 28 | 29 | 30 | 31 |
- list
- matplotlib
- 파이썬
- Python
- django
- Tkinter
- math
- PANDAS
- SQL
- numpy
- Excel
- GIT
- Presto
- dataframe
- Java
- Apache
- Github
- Redshift
- gas
- Google Excel
- hive
- Google Spreadsheet
- Kotlin
- PostgreSQL
- PySpark
- google apps script
- array
- c#
- string
- Today
- Total
달나라 노트
Python numpy : argmax, argmin (최대값의 index, 최소값의 index) 본문
Python numpy : argmax, argmin (최대값의 index, 최소값의 index)
CosmosProject 2025. 11. 8. 15:32
numpy에서 제공하는 argmax, argmin method에 대해 알아봅시다.
argmax는 주어진 array에서 가장 큰 값을 찾아 그 값의 위치(index)를 return합니다.
argmin은 주어진 array에서 가장 작은 값을 찾아 그 값의 위치(index)를 return합니다.
argmax, argmin은 기본적으로 작동 방식이나 작동 형태는 동일합니다.
다만 주어진 array에서 가장 큰 값을 찾느냐, 가장 작은 값을 찾느냐 이 차이이죠.
Syntax
numpy.argmax(array, axis=0/1)
numpy.argmin(array, axis=0/1)
- array
argmax, argmin을 적용할 대상 array를 전달합니다.
- axis
optional한 옵션입니다. 전달하지 않아도 됩니다.
axis를 명시하지 않은 경우 array를 1차원 array로 평탄화시켜서(flatten) argmax, argmin을 적용합니다.
axis=0로 명시하면 각 열에 대해서 argmax, argmin을 적용하고 그 결과를 array로 return합니다.
axis=1로 명시하면 각 행에 대해서 argmax, argmin을 적용하고 그 결과를 array로 return합니다.
import numpy as np
arr_test = np.array([4, 2, 7, 9, 2])
print(np.argmax(arr_test))
-- Result
3
arr_test에는 총 5개의 element가 들어있는데 이 중 가장 큰 값은 9입니다.
9가 존재하는 index는 3번이죠.
따라서 argmax는 3을 return합니다.
import numpy as np
arr_test = np.array([4, 2, 7, 9, 2])
print(np.argmin(arr_test))
-- Result
1
이번엔 동일한 array에 대해 argmin을 사용해보았습니다.
arr_test에 존재하는 총 5개의 element 중 가장 작은 값은 2입니다.
arr_test에서는 2가 index = 1과 4 두 위치에 존재하는에 이렇게 두개가 존재하는 경우 더 빠른 위치의 index를 return합니다.
그래서 1이 return된 것을 볼 수 있습니다.
import numpy as np
arr_test = np.array([
[4, 2, 7, 1, 2],
[0, 2, 9, 5, 8]
])
print(np.argmax(arr_test))
-- Result
7
이번에는 2행 5열의 형태를 가진 2차원 array를 전달해보았습니다.
argmax에 axis 옵션을 명시하지 않았으므로 argmax는 주어진 array를 1행 n열의 형태로 평탄화시킨 후 array를 return합니다.
[4, 2, 7, 1, 2, 0, 2, 9, 5, 8]
이런식으로 하나의 긴 array로 만들어서 그 중 가장 큰 값의 위치를 찾는 것이죠.
가장 큰 값은 9이고 이 값의 index는 7입니다.
import numpy as np
arr_test = np.array([
[4, 2, 7, 1, 2],
[0, 2, 9, 5, 8],
[9, 2, 1, 7, 4]
])
print(np.argmax(arr_test, axis=0))
-- Result
[2 0 1 2 1]
이번에는 axis=0으로 명시해보았습니다.
axis=0인 경우 각 열에 대해 argmax를 적용합니다.
위 코드를 보면
1열의 요소는 4, 0, 9입니다. 여기서 가장 큰 값은 9이고 세 번째에 존재하니 index = 2가 되죠.
2열의 요소는 2, 2, 2입니다. 여기서 가장 큰 값은 2이고 첫 번째, 두 번째, 세 번째 모두 2이므로 가장 빠른 위치인 index = 0을 return합니다.
3열의 요소는 7, 9, 1입니다. 여기서 가장 큰 값은 9이고 두 번째에 존재하니 index = 1이 됩니다.
4열의 요소는 1, 5, 7입니다. 여기서 가장 큰 값은 7이고 세 번째에 존재하니 index = 2이 됩니다.
5열의 요소는 2, 8, 4입니다. 여기서 가장 큰 값은 8이고 두 번째에 존재하니 index = 1이 됩니다.
여기서 return된 index를 하나의 array에 묶어봅시다.
[2, 0, 1, 2, 1]
그러면 위 코드의 결과와 동일합니다.
import numpy as np
arr_test = np.array([
[4, 2, 7, 1, 2],
[0, 2, 9, 5, 8],
[9, 2, 1, 7, 4]
])
print(np.argmax(arr_test, axis=1))
-- Result
[2 2 0]
이번에는 axis=1로 지정하였습니다.
axis=1인 경우 각 행에 대해 argmax를 적용합니다.
위 코드를 보면
1행의 요소는 4, 2, 7, 1, 2입니다. 여기서 가장 큰 값은 7이고 세 번째에 존재하니 index = 2가 되죠.
2행의 요소는 0, 2, 9, 5, 8입니다. 여기서 가장 큰 값은 9이고 세 번째에 존재하니 index = 2가 되죠.
3행의 요소는 9, 2, 1, 7, 4입니다. 여기서 가장 큰 값은 9이고 첫 번째에 존재하니 index = 0가 되죠.
여기서 return된 index를 하나의 array에 묶어봅시다.
[2, 2, 0]
그러면 위 코드의 결과와 동일합니다.
'Python > Python numpy' 카테고리의 다른 글
| Python numpy : power (거듭제곱) (0) | 2024.03.29 |
|---|---|
| Python numpy : percentile (백분위수), quantile (사분위수) (0) | 2024.03.25 |
| Python numpy : ones (1로 채워진 array 생성) (0) | 2024.03.07 |
| Python numpy : clip (최대/최소값 제한하기) (0) | 2022.03.22 |
| Python numpy : zeros_like (같은 크기의 0으로 채워진 행렬 생성, 같은 크기의 행렬 생성) (0) | 2022.03.22 |
