[Python] NumPy
# NumPy (Numerical Python)
: 데이터 분석을 포함해 수학/과학 연산을 위해 vector 와 matrix 를 핸들링하는 파이썬 기본 패키지
numpy 모듈의 호출
import numpy as np
# ndarray (Numpy Dimensional Arrary)
: N-차원 (N-Dimension) 배열 객체를 지원
ndarray 의 타입은 숫자, 문자, boolean 값 모두 가능하지만,
* ndarray 내의 데이터 타임은 모두 같은 타입이어야 (리스트와 가장 큰 차이점)
# np.arrray( )
: 리스트, 튜플, 배열로부터 ndarray를 생성
index 항상 0으로 시작
# array 생성
test_arrary = np.array([1, 4, 5, "8", float) # str 타입의 데이터를 입력해도 float 타입으로 자동 형변환
print(test_arrary)
print(type(test_arrary[3]) # float type 으로 자동 형변환을 실시
print(test_arrary.dtype) # dtype : numpy array 의 데이터 type 을 반환
print(test_arrary.shape) # shape : numpy arrary 의 object 의 dimension 구성을 반환
# arrary shape
: array - vector, matrix, tensor 의 크기, 형태 등에 대한 정보
# ndim (number of dimension) : 구성 차원 수
# size : 데이터의 총 개수
# dtype : ndarray 의 single element 가 가지는 data type (메모리의 크기가 결정됨)
# reshape
: array 의 shape 의 크기를 변경함 (element 갯수는 동일)
array 의 size 만 같다면 다차원으로 자유로이 변형 가능
* -1 : size 를 기반으로 row 개수 선정
test_matrix = [[1, 2, 3, 4], [1, 2, 5, 8]]
np.array(test_matrix).shape
np.array(test_matrix).reshape(8,)
np.array(test_matrix).reshape(2, 4).shape
np.array(test_matrix).reshape(-1, 2).shape
np.array(test_matrix).reshape(2, 2, 2)
# flatten
: 다차원 array 를 1차원 array 로 변환
(2, 2, 4) → (16,)
np.array(test_matrix).flatten( )
# indexing
: 리스트와 달리 이차원 배열에서 [0,0]과 같은 표기법을 제공
matrix 일 경우 앞은 row, 뒤는 column 을 의미
a = np.array([1, 2, 3], [4, 5, 6]], int)
print(a)
print(a[0,0])
print(a[0][0])
# matrix 0, 0 에 할당
a[0,0] = 7
print(a)
a[0][0] = 8
print(a)
# slicing
: 리스트와 달리 행과 열 부분을 나눠서 슬라이싱 가능
matrix 의 부분 집합을 추출할 때 유용
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]], int)
a[:, 2:] # Row - 전체, column - 2열 이상
a[1, 1:3] # 1 Row 의 1열 ~ 2열
a[1:3] # 1 Row ~ 2 Row 의 전체
0 | 1 | 2 | 3 | 4 | |
0 | 1 | 2 | 3 | 4 | 5 |
1 | 6 | 7 | 8 | 9 | 10 |
b = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]], int)
b[:,::2]
b[::2,::3]