본문 바로가기
IT/파이썬

파이썬 Numpy 배열 연산(기본 연산, 행렬 간 연산, 브로드캐스팅, 마스킹 연산)

by 깡타의 컴맹인생 2023. 4. 2.
반응형

파이썬 Numpy 배열 연산

목차
1. 기본 연산
2. 행렬 간 연산
3. 브로드캐스팅
4. 마스킹 연산

1. 기본 연산

array는 +(더하기), -(빼기), *(곱하기), /(나누기)에 대한 기본 연산을 지원한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
 
= np.arange(8)
 
print('a =', a, '\n')
 
print('a =', a+5'\n')
 
print('a =', a-5'\n')
 
print('a =', a*5'\n')
 
print('a =', a/5'\n')
cs
a = [0 1 2 3 4 5 6 7] 

a = [ 5  6  7  8  9 10 11 12] 

a = [-5 -4 -3 -2 -1  0  1  2] 

a = [ 0  5 10 15 20 25 30 35] 

a = [0.  0.2 0.4 0.6 0.8 1.  1.2 1.4]

2. 행렬 간 연산

array와 array끼리 연산도 가능하다. 다차원 행렬에서도 적용할 수 있다.

1
2
3
4
5
6
7
8
9
import numpy as np
 
= np.arange(4).reshape((22))
= np.random.randint(10, size = (22))
= a + b
 
print('a = \n', a, '\n')
print('b = \n', b, '\n')
print('c = \n', c, '\n')
cs
a = 
 [[0 1]
 [2 3]] 

b = 
 [[5 0]
 [2 4]] 

c = 
 [[5 1]
 [4 7]]

3. 브로드캐스팅

모양이 다른 array 끼리 연산하는 방법이다.

1
2
3
4
5
6
7
8
9
import numpy as np
 
= np.arange(3)
= np.arange(3).reshape((31))
= a + b
 
print('a = \n', a, '\n')
print('b = \n', b, '\n')
print('c = \n', c, '\n')
cs
a = 
 [0 1 2] 

b = 
 [[0]
 [1]
 [2]] 

c = 
 [[0 1 2]
 [1 2 3]
 [2 3 4]] 

1행 3열의 a 배열과 3행 1열의 b 배열을 합치면 3행 3열의 c 배열이 생성된다. 새롭게 생성되는 인덱스에 있는 데이터는 각 행과 열의 첫 번째 데이터들의 합으로 이루어진다.

1
2
3
4
5
6
7
8
9
import numpy as np
 
= np.arange(3)
= np.arange(9).reshape((33))
= a + b
 
print('a = \n', a, '\n')
print('b = \n', b, '\n')
print('c = \n', c, '\n')
cs
a = 
 [0 1 2] 

b = 
 [[0 1 2]
 [3 4 5]
 [6 7 8]] 

c = 
 [[ 0  2  4]
 [ 3  5  7]
 [ 6  8 10]]

다른 예로, 1행 3열의 a 배열과 3행 3열의 b 배열을 합친다면 a 배열에 있는 값들이 b 배열의 모든 행에 연산되는 것을 확인할 수 있다.


4. 마스킹 연산

True, False array를 통해서 특정 값들을 뽑아내는 연산 방법이다.

1
2
3
4
5
6
7
8
9
import numpy as np
 
= np.arange(5)
 
print('a = \n', a, '\n')
print('a > 2 \n', a > 2'\n')
print('a == 2 \n', a == 2'\n')
print('a[a > 2] \n', a[a>2], '\n')
print('a[a > 1] \n', a[a>1], '\n')
cs
a = 
 [0 1 2 3 4] 

a > 2 
 [False False False  True  True] 

a == 2 
 [False False  True False False] 

a[a > 2] 
 [3 4] 

a[a > 1] 
 [2 3 4]

중괄호를 사용하지 않고 마스킹 연산을 시도한 경우에는 기존 배열의 원소들의 값이 변경되어 해당 조건을 만족하는지에 따라 True, False로 나타난다. 중괄호를 사용하여 마스킹 연산을 시도하면 조건에 맞는 원소들을 반환한다.

반응형