📍 예시로 사용할 NumPy 배열

arr = np.arange(0, 11)
arr 출력 결과
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
arr_2d = np.arange(0, 20).reshape(4, 5)
arr_2d 출력 결과
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])


1. 산술 연산자

배열들을 산술 연산자로 계산할 때, 같은 위치에 있는 요소들간의 산술이 이루어진다. 사용할 수 있는 산술 연산자는 아래 목록과 같다.

  • 덧셈 : +
  • 뺄셈 : -
  • 곱셈 : *
  • 나눗셈 : /
  • 거듭제곱 : **
  • 몫 : //
  • 나머지 : %


🚨 주의할 점
배열들을 산술할 때 주의해야할 점은 두 배열의 구조이다. 연산 대상인 두 배열은 같은 구조를 가지고 있어야한다. 아래 예시는 example1 (10, ), example2 (8, 0) 로 배열의 구조가 다른 두 배열을 연산할 때 발생되는 오류이다.

example1 = np.arange(0, 10)
example2 = np.arange(0, 8)

example1 + example2

ValueError: operands could not be broadcast together with shapes (10,) (8,)

🚨 주의할 점
수학적으로 1을 0으로 나눌 수 있을까? No. 하지만 NumPy 배열의 연산 과정에서 1/0의 계산이 포함된다면, 결과는 오류없이(warning sign은 있음) inf(무한대)를 결과값으로 출력한다.

1/arr

RuntimeWarning: divide by zero encountered in true_divide

array([       inf, 1.        , 0.5       , 0.33333333, 0.25      ,
       0.2       , 0.16666667, 0.14285714, 0.125     , 0.11111111,
       0.1       ])

cf. 0을 0으로 나눈 결과는 NumPy 에서 nan 값으로 출력한다.


2. 연산 함수

NumPy 배열 전체에 적용할 수 있는 함수가 정의되어 있다. 함수는 아래 목록과 같다.

  • 제곱근 : np.sqrt()
  • 지수계산(e^) : np.exp()
  • 삼각함수 : np.sin() / np.cos() / np.tan()
  • 자연로그 : np.log()


3. 통계 함수

배열에 대해 요약 통계값을 출력할 수 있는 함수가 정의되어있다. 함수는 아래 목록과 같다.

  • 합계 : sum()
  • 평균 : mean()
  • 최댓값 : max()
  • 최솟값 : min()

전체 배열에 대해 통계 함수를 사용하려면 인자 전달 없이 함수만 사용하면 된다. 만약 2차 배열에 특정 축에 대해 통계값을 확인하고 싶으면 axis를 전달하면 된다.

axis=0은 행을 의미하는데, 행의 크기만큼 값이 출력되고 열을 기준으로 통계값을 출력한다. axis=1은 그 반대이다.

# 1) 열별로 합계를 출력한다.
arr_2d.sum(axis=0)
출력 결과
array([30, 34, 38, 42, 46])
# 각 행에 속한 요소들 중 최댓값을 뽑는다.
arr_2d.max(axis=1)
출력 결과
array([ 4,  9, 14, 19])


3. Reference


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기