개발/Python
#07 Numpy
dev-bleck
2022. 8. 24. 14:28
Numpy
- 수치 계산을 위한 파이썬 라이브러리
- 딥러닝에서 사용되는 Tensor와 유사함
- 백터와 행렬 단위의 대용량 수치 연산을 병렬로 빠르게 연산함
- 스칼라(scalar) : 단순하게 측정한 하나의 값
- 백터(vector) : 1차원 데이터(1차원 배열), 스칼라가 연속적으로 여러개 모여있는 것
- 행렬(matrix) : 2차원 데이터(2차원 배열), 백터가 여러개 모여있는 것
- 텐서(tensor) : 다차원 데이터(다차원 배열)
# Numpy 라이브러리 import
import numpy as np
# Data Type
scalar = 1
np.array(scalar)
>>> array(1)
vector = [1, 2, 3, 4, 5]
np.array(vector)
>>> array([1, 2, 3, 4, 5])
matrix = [
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]
]
np.array(matrix)
>>> array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]])
tensor = [
[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10]
],
[
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]
]
]
np.array(tensor)
>>> array([[[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10]],
[[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]]])
# numpy에서의 자료형
type(np.array(tensor))
>>> numpy.ndarray
# 구조 확인
np.array(tensor).shape
>>> (2, 2, 5)
# 백터에서 행 개수
arr.shape[0]
# 백터에서 열 개수
arr.shape[1]
자주 쓰는 numpy 데이터 타입
# 4byte 크기의 정수 (1byte = 8bit)
np.array([1, 2, 3], dtype = np.int32)
>>> array([1, 2, 3], dtype=int32)
# 8byte 크기의 정수
np.array([1, 2, 3], dtype = np.int64)
>>> array([1, 2, 3]) # numpy에선 default가 int64 형태여서 dtype 출력 생략
# 1byte 크기의 부호 없는 정수(u = unsigned = 부호 없는)
np.array([1, 2, 3], dtype = np.uint8)
>>> array([1, 2, 3], dtype=uint8)
# 4byte 크기의 실수(0은 생략). 딥러닝에서 사용. (PyTorch에선 4byte가 default)
np.array([1, 2, 3], dtype = np.float32)
>>> array([1., 2., 3.], dtype=float32)
# 8byte 크기의 실수
np.array([1, 2, 3], dtype = np.float64)
>>> array([1., 2., 3.])
# bool type
np.array([1,0,1,0,1,0,1], dtype = np.bool_)
>>> array([ True, False, True, False, True, False, True])
인덱싱과 슬라이싱
- 기본적으로 파이썬에서 사용되는 인덱싱과 슬라이싱을 그대로 따라감
lst = [1, 2, 3, 4, 5, 6]
arr = np.array(lst)
arr[0:3]
>>> array([1, 2, 3])
arr[:-2:-1]
>>> array([6])
다차원 슬라이싱
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12]
])
# 2, 5, 8, 11만 가져오고 싶다면?
arr[:,1] # ","의 의미? : 특정 column 지정
>>> array([ 2, 5, 8, 11])
728x90