[머신러닝/개념] Numpy & Pandas 축(axis) 개념 정리
2025. 2. 26. 22:07ㆍAI & 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 → 같은 행끼리 계산, 열이 증가 → 열 기준
'AI & DS > 머신러닝' 카테고리의 다른 글
[머신러닝] 데이터 인코딩(DataEncoding)/Feature Scaling이란? (0) | 2025.02.27 |
---|---|
[머신러닝/문법] Numpy & Pandas 결측치 관련 함수 (0) | 2025.02.26 |
[머신러닝] 공모전 추천 시스템(1) - 코랩/설치 라이브러리 (0) | 2024.08.29 |
[데이터 사이언스/문법] df[df[ ]] 과 df[ ]의 차이가 무엇일까? (0) | 2024.08.17 |
[데이터 사이언스/문법] columnTransformer란? (0) | 2024.08.16 |