끄적이는 개발노트
260512_강의 정리 (NumPy) 본문
728x90
■ NumPy
- 정의
- Python에서 수치 계산(숫자 계산)을 빠르게 수행하기 위한 라이브러리
- 목적
- 벡터/행렬 계산
- 대용량 데이터 처리
- 과학 계산
- 머신러닝 수학 연산
- 다른 라이브러리 관계
- NumPy : 배열(ndarray), 수학 계산
- pandas : 데이터 분석/전처리
- SciPy : 고급 수학/통계/신호처리
- Matplotlib : 그래프 시각화
- scikit-learn : 머신러닝
- ndarray
- NumPy의 핵심 객체
- 다차원 배열 객체
- 구조
- 1차원 배열 : 벡터 (Vector)
- 2차원 배열 : 행렬 (Matrix)
- 3차원 이상 : 텐서 (Tensor)
- NumPy 배열 특징
- 동질적 데이터 저장
- 하나의 배열 안에 같은 데이터 타입만 저장
- 계산 속도 향상을 위해서
- 연속 메모리 사용
- 데이터를 메모리에 연속적으로 저장
- 계산 속도 증가
- CPU cache 효율 증가
- 반복 계산 최적화
- 실제 메모리 저장 방식
- 겉보기에는 2차원/3차원이지만, 실제 메모리에는 1차원처럼 연속 저장
- Header에 메타정보 저장
- ndim : 차원 수
- shape : 배열 형태
- dtype : 데이터 타입
- strides : 이동 간격 (Byte 단위)
- order : 행 우선 (C order) / 열 우선 (F order)
- 동질적 데이터 저장
- Broadcasting (브로드캐스팅)
- 배열 크기가 달라도 자동으로 크기를 맞춰 계산
- 뒤 차원부터 비교
- ex) [1,2,3] + 1 => [2,3,4]
- 벡터 연산
- 요소 연산 (Element-wise)
- 같은 위치끼리 계산
- 내적 (Dot Product)
- 벡터끼리 곱해서 더함
- 두 벡터 방향이 얼마나 비슷한가?
- 1 : 같은 방향 , 0 : 수직, -1 : 반대 방향
- 코사인 유사도
- 내적을 이용한 방향 유사성 측정
- vs 상관계수
- 코사인 유사도 : 방향 유사성
- 상관계수 : 선형 관계
- 요소 연산 (Element-wise)
- 행렬곱 (Matrix Multiplication)
- 행렬곱은 요소곱과 다름
- 조건 : 앞 행렬의 열 수 = 뒤 행렬의 행 수
- ex) (2x3) x (3x2)
- NumPy 주요 기능
- numpy.random
- 난수 생성
- 지원
- 정규분포
- 카이제곱분포
- t분포
- F분포
- numpy.fft
- 푸리에 변환(Fast Fourier Transform)
- 파동을 사인파/코사인파 조합으로 분해
- 활용
- 음성 분석
- 신호 처리
- 이미지 처리
- numpy.polynomial
- 다항식 계산 지원
- 예시
- 다항식 생성
- 근 계산
- 곡선 fitting
- numpy.ma
- Mask Array
- 사용
- 특정 값 숨기기
- 특정 값 무시
- 특정 값 결측치 처리
- UFunc (Universal Function)
- NumPy의 빠른 수학 함수
- Python이 아니라 내부 C코드로 처리
- 예시
- np.sqrt()
- np.exp()
- np.sin()
- numpy.random
- 초월 함수
- 로그 함수 (log)
- 특징
- 큰 값 압축
- 확률 계산
- 데이터 스케일 조정
- 활용
- 머신러닝
- 통계
- 특징
- 지수 함수 (exp)
- 특징
- 급격한 증가/감소
- 활용
- 정규분포
- 딥러닝
- 확률 모델
- 특징
- 삼각 함수 (sin, cos)
- 활용
- 회전
- 파동
- 주기 데이터
- 신호 처리
- 활용
- 로그 함수 (log)
728x90
'Python' 카테고리의 다른 글
| 260519_강의 정리 (데이터 전처리) (0) | 2026.05.20 |
|---|---|
| 260518_강의 정리 (Pandas) (0) | 2026.05.18 |
| 260513_강의 정리 (Matplotlib) (0) | 2026.05.13 |
| 260415_강의 정리 (Flask) (1) | 2026.04.15 |
| 260410_강의정리 (Python을 이용한 MySQL DB 연동) (0) | 2026.04.10 |
