[넘파이(Numpy)]N차원 배열의 연산(2) - 최대/최소, 원소 합, 누적 합, 평균, 표준편차, 비교연산, 삼각함수 등

Jihwan Jung·2022년 8월 2일
2

🎲넘파이

목록 보기
6/11
post-thumbnail
post-custom-banner

💡오늘 배울 내용


앞서 배웠던 N차원 배열의 연산(1)에 이어, Numpy의 ndarray에 적용할 수 있는 연산을 배워봅시다.
최솟값 최댓값 평균 표준편차
원소 합 누적 합 중앙값
삼각함수 sin cos tan
비교연산자를 이용한 배열 연산

🔎배열의 최대/최소값


최댓값과 최솟값을 구하는 함수를 익히기 전해, axis=0과 axis=1의 의미를 복습해봅시다.
배웠던 것 처럼, axis=0은 각 열의 모든 행에서 동작합니다 또한 axis=1은 각 행의 모든 열에서 동작합니다.

axis = 0 : 각 열의 모든 행에서 동작
axis = 1 : 각 행의 모든 열에서 동작

🔔최솟값 - min()


arr = np.array([[1, 2, 3],
                [0, 1, 4]])
                
#배열 전체에서 최솟값 계산(서로 같은 표현)
print(np.min(arr))
print(arr.min())
>> 0

print(arr.min(axis=0))
>> [0 1 3]

print(arr.min(axis=1))
>> [1 0]

min()함수는 최솟값을 계산하는 Numpy 함수입니다. np.min(arr)처럼 배열을 괄호 안에 넣어 계산식을 작성할수도 있지만 arr.min()처럼 쓸 수도 있습니다. axis 조건을 지정해주지 않으면 단순히 배열 전체에서의 최솟값을 계산합니다.

🔔최댓값 - max()


arr = np.array([[1, 2, 3],
                [0, 1, 4]])
                
#배열 전체에서 최댓값 계산(서로 같은 표현)
print(np.max(arr))
print(arr.max())
>> 0

print(arr.max(axis=0)) #각 열에 대한 모든 행에서 동작
>> [1 2 4]

print(arr.max(axis=1)) #각 행에 대한 모든 열에서 동작
>> [3 4]

max()함수는 최댓값을 계산하는 Numpy 함수입니다. np.max(arr)처럼 배열을 괄호 안에 넣어 계산식을 작성할수도 있지만 arr.max()처럼 쓸 수도 있습니다. axis 조건을 지정해주지 않으면 단순히 배열 전체에서의 최솟값을 계산합니다.

🔎원소 합/누적합


원소 합과 누적 합을 계산하는 방법을 익혀봅시다. 마찬가지로 axis=0과 axis=1의 의미를 적절히 파악하는 것이 중요합니다.

🔔원소합 - sum()


arr = np.array([[1, 2, 3],
                [0, 1, 4]])
                
#배열 전체에서 원소들의 합 계산(서로 같은 표현)
print(np.sum(arr))
print(arr.sum())
>> 11

print(arr.sum(axis=0)) #각 열에 대한 모든 행에서 동작
>> [1 3 7]

print(arr.sum(axis=1)) #각 행에 대한 모든 열에서 동작
>> [6 5]

sum(axis=0)은 세개의 각 열에 대한 모든 행에서 동작하여 합을 계산하므로 [1 3 7]이라는 1차원 배열이 만들어지고, sum(axis=1)은 두개의 각 행에 대한 모든 열에서 동작하여 합을 계산하므로 [6 5]라는 1차원 배열이 만들어집니다.

🔔누적합 - cumsum()


배열 원소의 누적합은 첫번째 원소부터 누적하여 더한 결과를 계산하는 것입니다. [1 2 3]을 누적합으로 계산하면 [1 1+2 1+2+3]을 계산하여 [1 3 6]을 출력합니다.

arr = np.array([[1, 2, 3],
                [0, 1, 4]])

print(np.cumsum(arr)) #1차원 배열로 생성
print(arr.cumsum()) #1차원 배열로 생성
>> [ 1  3  6  6  7 11]

print(arr.cumsum(axis=0)) #각 열에 대한 모든 행에서 동작
>> [[1 2 3]
    [1 3 7]]

print(arr.cumsum(axis=1)) #각 행에 대한 모든 열에서 동작
>> [[1 3 6]
    [0 1 5]]

그림으로 좀 더 자세히 이해해봅시다.


arr.cumsum(axis=0)

arr.cumsum(axis=1)

🔎평균/표준편차/중앙값


수리통계학에서 통계량으로 사용되는 몇가지 값들의 연산법을 알아봅시다. 마찬가지로 매개변수 axis를 조절하여 원하는 축을 기준으로 한 연산 결과를 뽑을 수 있습니다.

🔔평균 - mean()


arr = np.array([[1, 2, 3],
                [0, 1, 4]])

print(np.mean(arr))
print(arr.mean())
>> 1.8333333333333333

print(arr.mean(axis=0))
>> [0.5 1.5 3.5]

print(arr.mean(axis=1))
>> [2.         1.66666667]

🔔표준편차 - std()


arr = np.array([[1, 2, 3],
                [0, 1, 4]])
                
print(np.std(arr))
print(arr.std())
>> 1.343709624716425

print(arr.std(axis=0))
>> [0.5 0.5 0.5]

print(arr.std(axis=1))
>> [0.81649658 1.69967317]
                

🔔중앙값 - median()


arr = np.array([[1, 2, 3],
                [0, 1, 4]])
                
print(np.median(arr)) #전체 원소에 대한 중앙값 계산
>> 1.5

print(np.median(arr, axis=0))
>> [0.5 1.5 3.5]

print(np.median(arr, axis=1))
>> [2. 1.]
                

🔎배열의 비교연산


비교연산자를 이용하여 배열을 연산할 수 있습니다.

arr1 = np.array([[1, 2, 3],
                 [4, 5, 6]])
                 
arr2 = np.array([[1, 0, 3],
                 [4, -2, 9]])
                 
print(arr1 == arr2)
>> [[ True False  True]
    [ True False False]]

print(arr1 > arr2)
>> [[False  True False]
    [False  True False]]

🔎배열 전체의 동일 여부


모양과 크기가 같은 배열임을 간단하게 확인 할 수 있습니다.

arr1 = np.array([[1, 2, 3],
                 [4, 5, 6]])
                 
arr2 = np.array([[1, 0, 3],
                 [4, -2, 9]])
                 
print(np.array_equal(arr1, arr2))
>> False

🔎삼각함수


삼각함수의 sin, cos, tan연산을 쉽게 할 수 있습니다. 또한 pi값을 어떻게 다루는지 알아봅시다.

arr1 = np.array([[1, 2, 3],
                 [4, 5, 6]])

# 삼각함수 sin값 구하기
print(np.sin(arr1))
>> [[ 0.84147098  0.90929743  0.14112001]
    [-0.7568025  -0.95892427 -0.2794155 ]]

# 삼각함수 cos값 구하기
print(np.cos(arr1))
>> [[ 0.54030231 -0.41614684 -0.9899925 ]
    [-0.65364362  0.28366219  0.96017029]]

# 삼각함수 tan값 구하기
print(np.tan(arr1))
>> [[ 1.55740772 -2.18503986 -0.14254654]
    [ 1.15782128 -3.38051501 -0.29100619]]

# pi 값 출력하기
print(np.pi)
>> 3.141592653589793
profile
22.10月~24.07月 공군 암호병 복무중/ 사회 과학과 딥 러닝에 관심이 있는 학부생(CS&E)입니다. 기술과 사회에 대한 이해를 바탕으로, 비즈니스 감각과 기술적 역량을 함께 갖춘 인공지능 프로그래머•데이터 과학자로 성장하고 싶습니다.
post-custom-banner

0개의 댓글