[Numpy] 넘파이 배열 연산하기
📍 예시로 사용할 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
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기