NumPy - 배열과 수치 연산의 시작
Python의 대표적인 수치 연산 라이브러리인 NumPy는 머신러닝, 딥러닝, 데이터 분석의 기초입니다. 배열 생성, 슬라이싱, 축(axis) 개념, 결측값 처리 등 주요 기능을 실습 중심으로 정리합니다.
배열 생성
import numpy as np
np.array([1, 2, 3])
np.arange(5) # 0부터 4까지
np.linspace(0, 1, 5) # 0부터 1까지 5등분
np.zeros((2, 3)) # 2x3 영행렬
np.ones((3, 3)) # 3x3 일행렬
np.eye(3) # 단위 행렬
배열 슬라이싱
NumPy 배열은 Python 리스트와 비슷하게 슬라이싱이 가능합니다. 하지만 다차원 배열에서도 매우 강력하게 작동합니다.
arr = np.array([[10, 20, 30],
[40, 50, 60],
[70, 80, 90]])
코드 | 설명 |
---|---|
arr[0, 1] |
첫 번째 행, 두 번째 열 (20) |
arr[1] |
두 번째 행 전체 [40 50 60] |
arr[:, 1] |
전체 행의 두 번째 열 ([20 50 80] ) |
arr[1:, :2] |
두 번째 행부터 끝까지, 첫 번째/두 번째 열 ([[40 50], [70 80]] ) |
arr[::-1] |
행을 역순으로 뒤집음 |
기본 연산
arr = np.array([[1, 2, 3],
[4, 5, 6]])
요소별 연산
arr + 1 # 각 요소에 1 더하기
arr * 2 # 각 요소에 2 곱하기
np.sqrt(arr) # 각 요소의 제곱근 계산
axis 개념 확실히 이해하기
NumPy는 axis
파라미터로 연산 방향을 제어합니다.
axis=0
: 행을 따라 연산 → 열 단위 연산 (예: 각 열의 평균, 합계)axis=1
: 열을 따라 연산 → 행 단위 연산 (예: 각 행의 평균, 합계)
예시:
arr = np.array([[1, 2, 3],
[4, 5, 6]])
np.mean(arr, axis=0) # 열 평균
# 결과: [2.5 3.5 4.5]
np.mean(arr, axis=1) # 행 평균
# 결과: [2. 5.]
함수별 설명:
함수 | 설명 |
---|---|
np.sum(arr, axis=0) |
각 열의 합 |
np.sum(arr, axis=1) |
각 행의 합 |
np.max(arr, axis=0) |
각 열의 최대값 |
np.min(arr, axis=1) |
각 행의 최소값 |
결측치 처리 (NaN)
data = np.array([1, 2, np.nan, 4])
np.isnan(data) # NaN 여부 확인 (boolean 배열 반환)
np.sum(np.isnan(data)) # NaN 개수 확인
data[~np.isnan(data)] # NaN 제거 (NaN이 아닌 값들만 선택)
np.nanmean(data) # NaN을 무시하고 평균 계산
Pandas와 함께 NaN 처리
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, np.nan],
'B': [5, np.nan, 9],
'C': [10, 20, 30]
})
df.dropna() # NaN이 포함된 행 제거
df.dropna(axis=1) # NaN이 포함된 열 제거
df.fillna(0) # NaN을 0으로 대체 (원하는 값으로 대체 가능)
NumPy 요약표
기능 | 함수 예시 | 설명 |
---|---|---|
배열 생성 | np.array() , np.arange() |
기본적인 NumPy 배열 만들기 |
배열 정보 | .shape , .dtype |
배열의 구조 및 데이터 타입 확인 |
연산 | + , * , np.sum() |
브로드캐스팅을 지원하는 요소별 연산 |
슬라이싱 | arr[1:3, :] |
파이썬 리스트 슬라이싱과 유사하며 다차원 지원 |
축(axis) 연산 | np.mean(arr, axis=0) |
지정된 축(열 또는 행) 방향으로 연산 수행 |
결측값 처리 | np.isnan() , np.nanmean() |
NaN 값 관련 함수 제공 |
'머신러닝&딥러닝' 카테고리의 다른 글
[머신러닝·딥러닝]파이썬 시각화의 시작, matplotlib 필수 문법 총정리 (4) | 2025.07.02 |
---|---|
[머신러닝·딥러닝] Pandas 기초 정리 - Series와 DataFrame의 개념부터 실습까지 한 눈에! (0) | 2025.07.01 |
[딥러닝]경사하강법 핵심 정리: 딥러닝 모델은 어떻게 학습될까? (4) | 2025.06.30 |
[머신러닝·딥러닝]머신러닝·딥러닝 입문자를 위한 필수 파이썬 문법 정리 (2) | 2025.06.30 |
[딥러닝]딥러닝 처음 시작할 때 반드시 알아야 할 환경 정리: Colab, PyTorch, TensorFlow (6) | 2025.06.30 |