[우리FISA 5기] AI엔지니어링 2주차 - 008일차

이정환·2025년 7월 13일

우리FISA

목록 보기
6/12

008일차 - NumPy

NumPy란?

🔗Numpy: The Foundation of Data Science and AI

  • Numeric Python의 줄임말으로 선형 대수 연산을 지원하는 라이브러리이다.
  • 내부적으로 C언어로 구현되어 있어 빠르며, 벡터화가 가능하다.
  • 위의 장점으로 많은 라이브러리에서 연산을 위해 사용한다.
  • Python 리스트 자료형과 다르게 모든 원소의 자료형이 일치해야 한다.

기본 함수 정리

import numpy as np

arr = np.array(List)        # -> numpy.ndarray 객체 반환
np.arange(start, end, step) # float 인자도 가능
np.append(arr, item) # np.ndarray 원소 추가, inplace X

# >>>>> 사이즈 관련
arr.itemsize # 한 원소가 차지하는 byte 사이즈
arr.dtype    # 자료형
arr.ndim     # 차원
arr.size     # 원소의 전체 개수
arr.shape    # ndarray의 구조, (5,) - 튜플 형식으로 반환
arr.strides  # 각 차원에 접근하기 위해 이동해야 하는 byte 크기
# <<<<< 사이즈 관련

# >>>>> 통계량
arr.mean() # 평균
np.average(arr, axis=0, weights=[float...]) # 가중평균 가능
np.median(arr) # 중앙값
arr.var()  # 분산
arr.std()  # 표준편차
# <<<<< 통계량
import statistics as st
st.mode(arr) # 최빈값은 다른 라이브러리 이용

arr.T        # Transpose

arr.argmax() # 가장 큰 요소의 인덱스 반환
arr.argmin() # 가장 작은 요소의 인덱스 반환

arr.flatten() # 1차원으로 변경

arr.astype(type | str)         # 자료형 변경
np.zeros(shape: Tuple[int...]) # shape 크기의 0으로 채워진 배열 반환
np.ones(shape: Tuple[int...])  # shape 크기의 1로 채워진 배열 반환

numpy-cheat-sheet 🔗Data Science Duniya

np.random

  • numpy의 난수 생성 형식이 변경되었다.
  • 기존 np.random 모듈에서 바로 난수를 생성했지만, random.Generator 객체를 생성 후 해당 객체의 메서드를 호출하는 형식으로 변경되었다.
import numpy as np

SEED = 42
rng = np.random.default_rng(seed=SEED) # Generator 객체 생성
rng.normal(loc=0, scale=1, size=100) # N(0, 1) 샘플 100개 생성

# 기존 방식
np.random.seed(SEED) # numpy 전역 난수 고정
np.random.normal(loc=0, scale=1, size=100)

💡변경된 방식으로 Generator 객체별 독립된 난수 스트림을 확보할 수 있어, 난수 관리가 더 명확해질 것으로 기대한다.

슬라이싱 인덱싱

  • 슬라이싱은 원본과 동일한 주소를 참조
  • 인덱싱은 원본의 값을 복사

브로드캐스팅

  • 차원이 다른 두 배열의 연산 과정에서 차원을 맞춰주기 위한 연산 방법이다.
  • 작은 차원의 배열이 큰 차원에 맞게 확장되어 연산된다.

🔗04-1 NumPy - 빠르고 효율적인 배열 계산 - LLM을 활용한 코딩기초

0개의 댓글