Axis(축)의 개념

NumPy에서 차원(dimension)을 축(axis)이라고도 부릅니다.

arr = np.arange(12).reshape(3, 4)
print("Array:\\n", arr)
print(f"Shape: {arr.shape}")  # (3, 4)

출력

[[0,  1,  2,  3],
 [4,  5,  6,  7],
 [8,  9, 10, 11]]

 # Axis 0 (↓) 열 방향
 # Axis 1 (→) 행 방향

Axis 기반 연산

arr = np.arange(12).reshape(3, 4)

# Axis 지정 없음: 전체 배열에 대해 연산
print(f"Sum (no axis): {arr.sum()}")  # 66 (모든 요소의 합)

# Axis 0: 행 방향으로 축소 (세로로 합침)
# → 각 열의 합
col_sums = arr.sum(axis=0)
print(f"Sum (axis=0): {col_sums}")  # [12, 15, 18, 21]
print(f"Shape: {col_sums.shape}")   # (4,)

# Axis 1: 열 방향으로 축소 (가로로 합침)
# → 각 행의 합
row_sums = arr.sum(axis=1)
print(f"Sum (axis=1): {row_sums}")  # [6, 22, 38]
print(f"Shape: {row_sums.shape}")   # (3,)

규칙:

3D 배열의 Axis

# 3D: (배치, 높이, 너비)
tensor = np.random.rand(2, 3, 4)
print(f"Shape: {tensor.shape}")  # (2, 3, 4)

print(f"\\nMean (no axis): {tensor.mean():.3f}")
print(f"Mean (axis=0) shape: {tensor.mean(axis=0).shape}")  # (3, 4)
print(f"Mean (axis=1) shape: {tensor.mean(axis=1).shape}")  # (2, 4)
print(f"Mean (axis=2) shape: {tensor.mean(axis=2).shape}")  # (2, 3)

3차원도 2차원과 같습니다.