[머신러닝·딥러닝]NumPy 기초 정리 - 배열 생성부터 axis 개념까지 명확하게

2025. 7. 1. 17:48·머신러닝&딥러닝

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
'머신러닝&딥러닝' 카테고리의 다른 글
  • [머신러닝·딥러닝]파이썬 시각화의 시작, matplotlib 필수 문법 총정리
  • [머신러닝·딥러닝] Pandas 기초 정리 - Series와 DataFrame의 개념부터 실습까지 한 눈에!
  • [딥러닝]경사하강법 핵심 정리: 딥러닝 모델은 어떻게 학습될까?
  • [머신러닝·딥러닝]머신러닝·딥러닝 입문자를 위한 필수 파이썬 문법 정리
jh_devnote
jh_devnote
Spring Boot, React, MySQL, JSP, Servlet, Docker, AWS 기반의 풀스택 웹 개발 프로젝트를 기록하는 기술 블로그입니다.
  • jh_devnote
    JH Devlog
    jh_devnote
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 🐱 Github
    • 🌐 My Site
    • 🗂 Portfolio
  • 전체 카테고리

    • 💻 개발
      • 네트워크
      • MYSQL
      • JAVA
      • SPRINGBOOT
      • Node.JS
      • React
      • LINUX
      • AWS
      • Docker
    • 📘 코딩테스트
      • 백준(Baekjoon)
      • 프로그래머스
    • 🧑‍💻 머신러닝&딥러닝
    • 📁 프로젝트
      • 📂 HealthMe
        • HealthMe_프론트엔드
        • HealthMe_백엔드
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jh_devnote
[머신러닝·딥러닝]NumPy 기초 정리 - 배열 생성부터 axis 개념까지 명확하게
상단으로

티스토리툴바