NumPy
는Numerical Python
의 약자로 다차원 배열을 다루는데 매우 효율적인 파이썬 라이브러리이다.
이 글에서는 NumPy 설치방법, NumPy의 특징과 함께 간단한 배열 생성 방법 및 연산에 대해 정리하고자 한다.
pip install numpy
를 입력해준다.import numpy as np
array1 = np.arange(4) # [0 1 2 3] 의 배열 생성
import numpy as np
array2 = np.zeros((4, 4), dtype=float)
'''
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
의 배열 생성
'''
import numpy as np
array2_1 = np.ones((3, 3), dtype=str)
'''
[['1' '1' '1']
['1' '1' '1']
['1' '1' '1']]
의 배열 생성
'''
import numpy as np
array3d = np.ones((3, 3, 3), dtype=str)
print(array3d)
''' 출력
[[['1' '1' '1']
['1' '1' '1']
['1' '1' '1']]
[['1' '1' '1']
['1' '1' '1']
['1' '1' '1']]
[['1' '1' '1']
['1' '1' '1']
['1' '1' '1']]]
'''
import numpy as np
array_ran = np.random.randint(0, 10, (3, 3))
'''
[[1 4 6]
[2 4 8]
[9 5 7]]
의 배열 생성
'''
import numpy as np
array_norm = np.random.normal(0, 1, (3, 3))
'''
[[-1.16249911 0.30251223 1.63606233]
[-1.05095362 -0.34898832 -0.77598991]
[-0.71999345 -0.81182158 0.93391068]]
의 배열 생성
'''
import numpy as np
array1 = np.array([1,2,3])
array2 = np.array([4,5,6])
array3 = np.concatenate([array1, array2])
print(array3.shape) # (6,)
print(array3) # [1 2 3 4 5 6]
import numpy as np
array1 = np.array([1,2,3,4])
array2 = array1.reshape((2, 2))
print(array2.shape) # (6,)
print(array2) # [ [1, 2]
# [3, 4] ]
import numpy as np
array1= np.arange(4).reshape(1, 4)
array2= np.arange(8).reshape(2, 4)
print(array1) # [[0, 1, 2, 3]]
print(array2) # [[0, 1, 2, 3]
# [4, 5, 6, 7]]
array3 = np.concatenate([array1, array2], axis=0)
print(array3) # [[0, 1, 2, 3]
# [0, 1, 2, 3]
# [4, 5, 6, 7]]
index=2
인 열(3번째 열)을 기준으로 나누기import numpy as np
array1= np.arange(8).reshape(2, 4)
left, right = np.split(array1, [2], axis=1)
print(left.shape) # (2, 2) 2x2 로 나뉨
print(right.shape) # (2, 2)
print(array1) # [0, 1, 2, 3]
# [4, 5, 6, 7]]
print(left) # [[0, 1]
# [4, 5]]
print(right) # [[2, 3]
# [6, 7]]
+2
, -2
가 된다.import numpy as np
array1 = np.array([1,2,3,4])
#덧셈
array2 = array1 + 2
#뺄셈
array3 = array1 - 2
print(array2) # [3 4 5 6]
print(array3) # [-1 0 1 2]
*2
, /2
가 된다.import numpy as np
array1 = np.array([1,2,3,4])
#곱셈
array2 = array1 * 2
#나눗셈
array3 = array1 / 2
print(array2) # [2 4 6 8]
print(array3) # [0.5 1. 1.5 2. ]
NumPy는 서로 다른 형태의 배열을 연산할 때는 행 우선으로 수행된다.
일반적으로 행렬의 연산이란 동일한 형태의 행렬끼리의 연산을 의미하지만, NumPy의 경우 서로 다른 형태의 배열끼리 연산이 가능하다.
2*2
형태의 데이터와 1*2
형태의 데이터를 연산하는 경우 1*2
형태의 데이터의 크기가 2*2
로 늘어나게 된다.import numpy as np
array1 = np.arange(4).reshape(2,2)
array2 = np.arange(2).reshape(1,2)
print(array1) # [[0 1]
# [2 3]]
print(array2) # [[0 1]]
result_array = array1 + array2
print(result_array) # [[0 2]
# [2 4]]
2*4
형태의 데이터에 대해 5보다 작은 경우의 마스킹 연산을 수행하게 되면 True, False
값을 가진 배열을 반환한다.import numpy as np
array1 = np.arange(8).reshape(2,4)
boole = array1 < 5
print(array1) # [[0 1 2 3]
# [4 5 6 7]]
print(boole) # [[ True True True True]
# [ True False False False]]
array1[boole] = 100 # 10보다 작은 원소를 선택해 100으로 바꾼다
print(array1)
# [[100 100 100 100]
# [100 5 6 7]]
import numpy as np
array1 = np.arange(16).reshape(4,4)
print("최대값:", np.max(array1)) # 최대값: 15
print("최소값:", np.min(array1)) # 최소값: 0
print("합계:", np.sum(array1)) # 합계: 120
print("평균값:", np.mean(array1)) # 평균값: 7.5
각각의 열이나 행에 대한 집계함수를 구할수도 있다.
예시: 각 열에 대해서 모든 행의 원소를 더한 값을 수행
import numpy as np
array1 = np.arange(16).reshape(4,4)
print(array1)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
'''
print("합계:", np.sum(array1, axis=0))
# 각 열을 기준으로 더한 값 출력
# 합계: [24 28 32 36]