NumPy 패키지란?
- 수치해석용 파이썬 패키지
- 벡터, 행렬 등 선형대수로 주로 사용
- 내부 반복문이 C로 구현되어 있어 파이썬에 비해 속도가 빠름
- 관례적으로 np로 import(즉, import numpy as np)
배열
1. 사용 방법
import numpy as np
arr = np.array([0,1,2,3,4])
print(arr) # [0 1 2 3 4]
print(type(arr)) # <class 'numpy.ndarray'> n-차원 배열(n-dimensional array)
- 모든 원소가 같은 자료형이어야 함.
- 원소의 개수를 바꿀 수 없음
- 벡터화 연산을 수행
- 리스트에 비해 제약이 많으나, 이로 인해 실행 속도가 빠름
벡터화 연산
- 데이터를 모두 2배 해야하는 경우 (배열 안에 있는 수 하나하나 2배 해야하는 경우)
- 배열
arr = np.array([0,1,2,3,4])
arr = arr*2
print(arr) # [0 2 4 6 8]
- 리스트
num = [0,1,2,3,4]
result = []
for i in num:
result.append(2*i)
print(result) # [0, 2, 4, 6, 8]
- 배열 같이 리스트에 적용하면 ?
num = [0,1,2,3,4]
num = num * 2
print(num) # [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
결론 : 배열의 경우 반복문을 사용할 필요가 없어서 계산 속도가 빠르다.
- 사칙연산, 비교 연산, 논리 연산 모두 적용 가능!
a = np.array([0,1,2])
b = np.array([3,4,5])
print(2*a+b) # [3 6 9]
print(a==2) # [False False True]
print((a==1) & (b>3)) # [False True False]
두 배열의 길이가 다르면 오류
a = np.array([0,1,2])
b = np.array([2,4,6,8])
print(a+b) # 에러 !!
n차원 배열
- 2차원, 3차원 등 n차원의 배열 구조를 지원한다.
na = np.array([[0,1,2],[3,4,5]])
print(na)
'''
결과 ( 2개의 행(Row)과 3개의 열(Column) )
[[0 1 2]
[3 4 5]]
'''
- 행, 열의 개수 출력
na = np.array([[0,1,2],[3,4,5]])
print(len(na)) # 행의 개수 : 2
print(len(na[0])) # 열의 개수 : 3
- 행마다 길이(열의 갯수)가 다르면 오류
na = np.array([[0,1,2],[3,4,5,6]]) # 오류 !!
3차원 배열
nb = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
print(nb) # 2*3*4 배열
'''
결과
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
[[ 13 14 15 16]
[ 17 18 19 20]
[ 21 22 23 24]]]
'''
- 배열의 차원과 크기 ( ndim, shape )
na = np.array([[0,1,2],[3,4,5]])
print(na.ndim) # 차원 : 2
print(na.shape) # 크기 : (2,3)
nb = np.array([[[1,2,3,4],[5,6,7,8],[9,10,11,12]],
[[13,14,15,16],[17,18,19,20],[21,22,23,24]]])
print(nb.ndim) # 차원 : 3
print(nb.shape) # 크기 : (2,3,4)
자료: 데이터 사이언스 스쿨 (https://datascienceschool.net/intro.html)