티스토리 뷰
numpy 배열 형태의 자료를 연산하는 방법에 대해 알아보도록 하겠습니다. 다양한 형태로 존재하는 array를 활용하기 위해서는 사칙연산뿐만 아니라 행렬 연산 및 최대 최소 등을 뽑아내야 하는 경우가 많기 때문에 이번 포스팅에서 알아보고 넘어가도록 하겠습니다.
numpy 배열 연산
배열 사칙연산
배열 요소의 연산
배열의 행렬 연산
배열 사칙연산
배열의 사칙연산은 더하기, 빼기, 곱하기, 나누기가 모두 가능합니다. 배열의 사칙연산은 각 요소의 위치별로 계산됩니다. 즉, 1행 2열의 요소는 다른 배열의 1행 2열과 사칙연산이 진행됩니다. 아래 3행 2열의 배열을 두 개 생성하여 사칙연산을 수행해보겠습니다. 특히, 배열이 행렬의 형태와 유사하기 때문에 배열의 곱셈 연산이 행렬의 연산과 착각하지 않도록 주의해야 합니다. 이제 아래 생성된 배열 a와 b의 사칙연산을 실행해보겠습니다.
import numpy as np
a = np.arange(6).reshape(3,2)
b = np.arange(-2,4,1).reshape(3,2)
#1
print(a + b)
#2
print(a - b)
#3
print(a * b)
#4
print(a / b)
#1 실행결과
[[ -2 0]
[ 2 4]
[ 6 8]]
#2 실행결과
[[ 2 2]
[ 2 2]
[ 2 2]]
#3 실행결과
[[ 0 -1]
[ 0 3]
[ 8 15]]
#4 실행결과
[[-0. -1. ]
[ inf 3. ]
[ 2. 1.66666667]]
배열의 요소의 연산
배열 요소의 연산이라는 다소 모호한 표현을 써놓았지만, 사실 그 배열의 최대 최소 및 배열 요소의 전체 합 또는 특정 행과 열의 합과 같은 여러 가지 연산이 가능합니다. 지금부터 배열을 선언하여 numpy를 통해 결과를 확인해보도록 하겠습니다.
import numpy as np
a = np.arange(6).reshape(3,2)
#1
print(a.sum())
#2
print(a.sum(axis=0))
print(a.sum(axis=1))
#3
print(a.max())
print(a.min())
#1 실행결과
15
#2 실행결과
[6 9]
[1 5 9]
#3 실행결과
5
0
#2의 경우를 보았을 때, axis 옵션을 지정하여 배열의 합을 구한 결과를 확인할 수 있습니다. axis=0으로 지정된 경우 행을 기준으로 덧셈 연산을 진행하였고, axis=1로 지정된 경우에는 열을 기준으로 덧셈연산을 진행하였습니다.
마지막으로 #3은 배열의 최댓값과 최솟값을 찾는 메서드입니다.
배열의 행렬 연산
앞서 소개한 배열의 사칙연산은 각 요소의 위치별로 연산을 수행했습니다. 하지만 배열은 행렬의 형태로 생겨있어 행렬의 연산 또한 가능합니다. 행렬 곱뿐만 아니라 역행렬을 구하는 메서드도 지원하고 있으며, 행렬의 행과 열을 바꾸는 전치 행렬 연산도 가능합니다.
import numpy as np
a = np.arange(6).reshape(3,2)
b = np.arange(-2,4,1).reshape(2,3)
#1
print(a.dot(b))
#2
print(np.dot(a,b))
#1 실행결과
[[ 1 2 3]
[-1 4 9]
[-3 6 15]]
#2 실행결과
[[ 1 2 3]
[-1 4 9]
[-3 6 15]]
행렬곱의 결과입니다. 배열의 행렬곱은 아래와 같은 방법으로 구현할 수 있습니다.
- 배열 1.dot(배열 2)
- np.dot(배열1, 배열2)
그리고 나머지 역행렬과 행렬식을 구하는 방법 및 행과 열을 바꾸는 전치 행렬에 대해 알아보겠습니다.
import numpy as np
a = np.arange(6).reshape(3,2)
b = np.arange(4).reshape(2,2)
#1
print(a.transpose())
#2
print(np.linalg.inv(b))
print(np.linalg.det(b))
#1 실행결과
[[0 2 4]
[1 3 5]]
#2 실행결과
[[-1.5 0.5]
[ 1. 0. ]]
-2.0
'소프트웨어 > 파이썬' 카테고리의 다른 글
pandas로 생성한 데이터 연산하기 (0) | 2022.03.29 |
---|---|
파이썬 pandas를 이용하여 데이터 생성하기 (0) | 2022.03.28 |
파이썬 numpy 배열생성과 재구성하는 방법 (0) | 2022.03.25 |
파이참에서 numpy 설치하는 방법 (0) | 2022.03.24 |
파이썬 자료구조 딕셔너리 알아보기 (0) | 2022.03.23 |