본문 바로가기
프로그램

[파이썬] 문제 : 2차원 배열에서 최대값 찾기

by 오디세이99 2022. 11. 23.
728x90
반응형

(문제)

넘파이 2차원 배열에서 max 함수를 사용하지 않고 반복문을 가지고 최댓값을 구해야 하는데 

전체 배열, 각 행에 대해서 최댓값 구하기
 
(방법)
 
import numpy as np
import random

row_cnt = 10       # 열 수 설정
column_cnt = 5     # 행 수 설정
lst = []           # 2차원 배열
for i in range(row_cnt):   # 2차원 배열에 값 설정
    tmp = []
    for j in range(column_cnt):
        tmp.append(random.randint(1, 100))
    lst.append(tmp)

arr = np.array(lst)    # numpy 배열로 만들기

-

lst   # 2차원 배열 확인
------------------------
[[20, 21, 59, 45, 74],
 [60, 78, 35, 63, 71],
 [73, 29, 24, 83, 32],
 [85, 65, 5, 29, 75],
 [72, 57, 46, 50, 63],
 [56, 25, 13, 5, 31],
 [68, 75, 58, 66, 73],
 [49, 3, 57, 1, 90],
 [48, 43, 66, 35, 45],
 [56, 21, 15, 20, 41]]

arr    # numpy 2차원 배열 확인
-------------------------
array([[27, 67,  8, 48, 65],
       [ 8, 63, 42, 27, 46],
       [68, 79, 32, 49, 86],
       [88, 13, 61, 38, 14],
       [32, 17, 85, 25,  2],
       [75, 82, 34, 27, 72],
       [60, 99, 78, 57, 78],
       [79, 80, 97, 28, 91],
       [75, 31, 21, 27, 96],
       [35, 10, 49, 51, 91]])


np.max(arr)    # numpy max 함수 사용
-------------------------------
99


# 행마다 max 값 찾기
for i in range(len(arr)):
    print(i,'/',np.max(arr[i]))
--------------------------
0 / 67
1 / 63
2 / 86
3 / 88
4 / 85
5 / 82
6 / 99
7 / 97
8 / 96
9 / 91

반복문으로 numpy 2차원 배열에서 MAX 값 구하기

# 전체 MAX 구하기
rtn_max = 0
for i in range(len(arr)):
    for j in range(len(arr[i])):
        if arr[i,j] > rtn_max:
            rtn_max = arr[i,j]

print('전체MAX=',rtn_max)
            
# 행마다 MAX 구하기
for i in range(len(arr)):
    rtn_max = 0
    for j in range(len(arr[i])):
        if arr[i,j] > rtn_max:
            rtn_max = arr[i,j]
    print(i,'/',rtn_max)

결과

전체MAX= 99
0 / 67
1 / 63
2 / 86
3 / 88
4 / 85
5 / 82
6 / 99
7 / 97
8 / 96
9 / 91
728x90
반응형

댓글