Published 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

'개발 > Python' 카테고리의 다른 글

#09 EDA(with Pandas)  (0) 2022.08.29
#08 Pandas basic  (0) 2022.08.29
#05 For  (0) 2022.07.28
#04 제어문  (0) 2022.07.25
#03 문자열  (0) 2022.07.23
복사했습니다!