본문 바로가기
Numpy

[Numpy] 배열 초기화 및 변형 함수

by PredictLab | 데이터 예측 연구소 2025. 4. 8.

1. 개요

NumPy를 활용한 배열 생성에서 한 단계 더 나아가, 이번 글에서는 배열을 다양한 방식으로 초기화하고 형태를 바꾸는 데 유용한 함수 5가지를 소개합니다. np.eye는 단위 행렬을 생성하며, np.full은 원하는 값으로 배열을 채울 수 있습니다. 또한, 배열의 모양을 바꾸거나 평탄화하는 데 유용한 np.reshape, np.ravel, np.flatten도 실습해보겠습니다.

2. 내용

2-1. np.eye

np.eye는 단위 행렬(Identity matrix)을 생성하는 함수입니다. 대각선 요소는 1, 나머지는 0인 정사각형 배열을 만들며, 선형대수와 머신러닝 분야에서 많이 사용됩니다.

import numpy as np
i = np.eye(3)
print(i)
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

옵션으로 행과 열의 개수를 다르게 지정할 수도 있으며, k 값을 활용해 대각선 위치도 조절할 수 있습니다.

2-2. np.full

np.full은 사용자가 지정한 값으로 배열 전체를 채웁니다. 예를 들어 모든 요소가 7인 2x2 배열을 만들고자 할 때 매우 유용합니다.

f = np.full((2, 2), 7)
print(f)
[[7 7]
 [7 7]]

기본적으로 정수, 실수, 문자열 등 모든 자료형을 지원하며, 마스킹 처리나 초기화 용도로 자주 사용됩니다.

2-3. np.reshape

np.reshape는 배열의 형태를 바꾸는 함수입니다. 1차원 배열을 2차원, 또는 그 반대로 변경할 때 사용됩니다. 단, 전체 원소 개수는 변하지 않아야 합니다.

a = np.arange(6)
r = np.reshape(a, (2, 3))
print(r)
[[0 1 2]
 [3 4 5]]

reshape은 데이터를 재구성할 때 필수적인 함수로, 머신러닝 입력값 준비 시 자주 활용됩니다.

2-4. np.ravel

np.ravel은 다차원 배열을 1차원으로 평탄화합니다. reshape(-1)과 유사하지만, 가능한 경우 원본 배열의 뷰(view)를 반환하여 더 빠릅니다.

m = np.array([[1, 2], [3, 4]])
r = np.ravel(m)
print(r)
[1 2 3 4]

ravel()은 대용량 데이터 처리 시 메모리 절약에 효과적이며, 반복 연산 시 성능 차이를 만들 수 있습니다.

2-5. np.flatten

flatten은 배열을 1차원으로 평탄화하는 또 다른 방법입니다. ravel과 달리 항상 복사(copy)를 생성하므로, 원본 배열을 유지하면서 새로운 배열이 필요한 경우에 사용됩니다.

f = m.flatten()
print(f)
[1 2 3 4]

원본 배열에 영향을 주지 않기 때문에, 복잡한 연산 과정에서 안전하게 배열을 펼치고자 할 때 많이 사용됩니다.

3. 결론

이번 글에서는 배열을 특정 방식으로 초기화하거나 모양을 바꾸는 데 유용한 5가지 NumPy 함수를 알아보았습니다. np.eyenp.full은 원하는 값으로 배열을 채우고, np.reshape, np.ravel, np.flatten은 배열 구조를 유연하게 조정하는 데 큰 도움이 됩니다. 이러한 함수는 데이터 전처리, 이미지 처리, 기계 학습 모델 입력 구성 등 다양한 분야에서 자주 사용되므로 꼭 숙지해두시기 바랍니다.