Data Analysis: NumPy

Ohback·2025년 1월 10일
post-thumbnail

1. NumPy 란?

NumPy란 Numerical Python의 줄임말로, 대규모 다차원 배열과 행렬 연산을 지원하는 파이썬 라이브러리이다. NumPy는 수학적 연산을 빠르고 효율적으로 수행할 수 있도록 설계되어 있어, 데이터 분석, 머신러닝, 인공지능, 이미지 처리, 신호 처리, 통계 분석 등 여러 분야에서 활용된다.

출처: 교안

1-1. NumPy의 특징

  • N차원 배열 객체 (ndarray):
    고성능 다차원 배열 구조로, 효율적인 메모리 사용 및 연산 지원.

  • 빠른 계산 속도:
    내부적으로 C, C++로 구현되어 있어 Python의 기본 리스트보다 빠름.

  • 다양한 연산 지원:
    배열 연산, 선형대수, 통계, 랜덤 생성 등.

  • 다른 라이브러리와 호환성:
    Pandas, TensorFlow 등의 라이브러리가 NumPy를 기반으로 설계됨.

1-2. NumPy의 주요 기능

  • 배열 슬라이싱 및 인덱싱:
    NumPy는 Python 리스트와 유사하게 배열 슬라이싱과 인덱싱이 가능하며, 다차원 배열에서도 활용 가능.

  • 다양한 함수:
    합계, 평균, 중앙값, 표준편차, 분산 등의 값을 구하는 함수가 있음.

  • 배열 변형 및 조작:
    배열의 형태를 변경하거나 병합 및 분리할 수 있음.

1-3. NumPy의 장점

  • 빠른 연산 속도:
    NumPy는 내부적으로 C로 구현되어 있어, Python 리스트보다 훨씬 빠른 속도로 대량의 데이터를 처리.

  • 효율적인 메모리 사용:
    배열의 데이터는 동일한 데이터 타입을 사용하므로 메모리 낭비가 적음.

  • 다양한 기능:
    배열 연산 외에도 통계, 선형대수, 난수 생성 등 풍부한 수학적 도구 제공.

2. 오늘의 궁금증

2-1. 일반곱셈 vs 내적곱셈

  • 일반 곱셈 (*)
    배열 요소 간의 원소별 곱셈(element-wise multiplication)을 수행.
    두 배열의 크기(shape)가 같아야 하며, 각 위치의 요소끼리 곱한다.
    브로드캐스팅(broadcasting)이 적용될 수 있음
import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 일반 곱셈
C = A * B
print(C)		# [[ 5 12]
 				# [21 32]]
  • 내적 곱셈 (@ 또는 np.dot)
    배열의 행렬 곱셈(matrix multiplication)을 수행.
    A의 열(column) 개수와 B의 행(row) 개수가 같아야 한다.
    결과 배열의 크기(shape)는 (𝐴의 행, 𝐵의 열), 행렬의 곱셈 규칙을 따름.
import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 내적 곱셈
D = A @ B  # 또는 np.dot(A, B)
print(D)		# [[19 22]
 				# [43 50]]

2-2. 몬테카를로 시뮬레이션(Monte Carlo Simulation)

NumPy를 복습하다가 데이터 분석에 난수가 필요한 이유가 무엇일까 궁금하여 찾아보게 되었는데, '몬테카를로 시뮬레이션' 이란 것이 눈에 띄어 알아보게 되었다.
이름부터 신선한 몬테카를로 시뮬레이션은 모나코 몬테카를로 지역이 카지노로 유명한데 확률적 문제를 해결하기 위해 무작위 실험을 반복하는 것이 도박의 확률적 특성과 유사하여 명명 되었다고 한다.

그래서 몬테카를로 시뮬레이션이란 난수를 활용한 확률적 시뮬레이션 기법으로 복잡한 시스템이나 문제의 결과를 확률적으로 추정하기 위해 난수를 여러 번 생성하여 실험을 반복하고, 그 결과를 바탕으로 통계적 추정을 하는데 일반적으로 분석적으로 해결하기 어려운 문제를 해결할 때 사용되는 방법이라 한다.

  • 주요 특징
    1) 확률적 접근: 난수를 생성하여 다양한 가능성을 시뮬레이션하고, 그 결과를 통계적으로 분석하여 문제를 해결한다.
    2) 반복적인 실험: 많은 수의 실험을 반복하여 평균, 분포, 확률 등을 추정한다.
    3) 다양한 분야에서 활용: 물리학, 금융, 경제학, 생물학 등 다양한 분야에서 사용된다.

이미지 출처: https://namu.wiki/w/NumPy
몬테카를로 시뮬레이션 참고자료 https://aws.amazon.com/ko/

profile
기록은 기억을 지배한다.

0개의 댓글