[머신러닝/개념] Numpy & Pandas 축(axis) 개념 정리

2025. 2. 26. 22:07AI & DS/머신러닝

 

"행 단위 연산"이면 행을 기준으로 해야 할 것 같은데, 왜 "열 기준 연산"이라고 할까?" 
축의 의미를 이해해보자


axis=0과 axis=1이 의미 : 어떤 방향으로 연산을 적용하는가?

  • axis=0 → "위에서 아래로(⬇) 세로 방향으로 적용" → 즉, 행(row) 단위 연산
  • axis=1 → "왼쪽에서 오른쪽으로(➡) 가로 방향으로 적용" → 즉, 열(column) 단위 연산
즉, 연산을 적용하는 기준이 축(axis) -> 축을 따라 이동하면서 연산을 수행하는 것!
1. axis=0이면  행 방향(세로 방향)으로 이동하면서 연산을 수행
2. axis=1이면 열 방향(가로 방향)으로 이동하면서 연산을 수행

 

axis=0 ⬇ 세로(수직) 열(column) 기준 연산 행(row)단위 연산 행(row) 삭제 각 열(column)에 함수 적용
axis=1 ➡ 가로(수평) 행(row) 기준 연산 열(column) 단위 연산 열(column) 삭제 각 행(row)에 함수 적용

 


axis=0 → 열(column) 기준 연산 (행 단위 연산)

위에서 아래(⬇)로 이동하면서 연산을 수행

  • 예를 들어, sum(axis=0)이면, 같은 열(column)끼리 더하는 것이다.
  • 즉, 열 기준으로 값을 모아 연산을 수행하므로 열(column) 기준 연산이라고 한다.
  • 하지만 결과적으로 하나의 열이 만들어지니까, 행(row) 단위의 값이 생성됨행 단위 연산이라고도 부를 수 있다.

예제 (axis=0 합계 연산)

import numpy as np
arr = np.array([[1, 2, 3], 
                [4, 5, 6]])

print(np.sum(arr, axis=0))  # 열(column)별 합

# 결과: [5, 7, 9] → 같은 열의 원소들(1+4, 2+5, 3+6)이 더해짐 → 열 기준으로 연산 수행됨. 행 단위 값 생성

 


axis=1 → 행(row) 기준 연산 (열 단위 연산)

왼쪽에서 오른쪽(➡)으로 이동하면서 연산을 수행

  • 예를 들어, sum(axis=1)이면, 같은 행(row)끼리 더하는 것
  • 즉, 행 기준으로 값을 모아 연산을 수행하므로 행(row) 기준 연산이라고 한다.
  • 하지만 결과적으로 하나의 행이 만들어지니까, 열(column) 단위의 값이 생성됨 → 열 단위 연산이라고도 부를 수 있다.

예제 (axis=1 합계 연산)

print(np.sum(arr, axis=1))  # 행(row)별 합

# 결과: [6, 15] → 같은 행의 원소들(1+2+3, 4+5+6)이 더해짐 → 행 기준으로 연산 수행, 열 단위 값 생성

연산 기준 적용하는 방향 (⬇➡) 의미 결과

axis=0 위→아래 (세로) 열 기준 연산 (행 단위 연산) 열 별로 연산 수행, 각 열의 값들을 모아 하나의 행 생성
axis=1 왼→오 (가로) 행 기준 연산 (열 단위 연산) 행 별로 연산 수행, 각 행의 값들을 모아 하나의 열 생성
  • 기준 연산 : "어떤 방향으로 이동하면서 연산을 수행하는가?" → axis의 개념
  • 단위 연산 : "연산의 결과가 어느 차원에 남는가?"행 단위인지, 열 단위인지

np.concatenate((A, B), axis=0) → 행(row) 기준 병합

  • axis=0 → 세로(⬇) 방향으로 병합
  • "위에서 아래로" 이어붙이는 것 → 행(row) 단위로 추가된다.
  • 결과적으로 행이 늘어나지만, 열(column)은 그대로 유지된다.
import numpy as np

A = np.array([[1, 2],
              [3, 4]])

B = np.array([[5, 6],
              [7, 8]])

result = np.concatenate((A, B), axis=0)
print(result)
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

np.concatenate((A, B), axis=1) → 열(column) 기준 병합

  • axis=1 → 가로(➡) 방향으로 병합
  • "왼쪽에서 오른쪽으로" 이어붙이는 것 → 열(column) 단위로 추가된다.
  • 결과적으로 열이 늘어나지만, 행(row)은 그대로 유지된다.
result = np.concatenate((A, B), axis=1)
print(result)
[[1 2 5 6]
 [3 4 7 8]]

행 기준 vs 열 기준과 axis의 관계

np.concatenate((A, B), axis=0) ⬇ 아래로(세로) axis=0 "행(row) 기준"으로 추가 (행 개수 증가)
np.concatenate((A, B), axis=1) ➡ 옆으로(가로) axis=1 "열(column) 기준"으로 추가 (열 개수 증가)
  • axis=0이면 "위→아래로 행을 추가" → "행(row) 기준 연산"
  • axis=1이면 "왼→오른쪽으로 열을 추가" → "열(column) 기준 연산"

 "기준"이란?

  • 새로 생성되는 데이터가 어떤 축을 따라 확장되는가?
    • axis=0 → 행(row) 기준으로 확장 (세로⬇)
    • axis=1 → 열(column) 기준으로 확장 (가로➡)
  • axis=0 → 같은 열끼리 계산, 행이 증가행 기준
  • axis=1 → 같은 행끼리 계산, 열이 증가열 기준