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.eye
와 np.full
은 원하는 값으로 배열을 채우고, np.reshape
, np.ravel
, np.flatten
은 배열 구조를 유연하게 조정하는 데 큰 도움이 됩니다. 이러한 함수는 데이터 전처리, 이미지 처리, 기계 학습 모델 입력 구성 등 다양한 분야에서 자주 사용되므로 꼭 숙지해두시기 바랍니다.
'Numpy' 카테고리의 다른 글
[Numpy] 조건 인덱싱과 대각선 추출 함수 (np.nonzero, np.clip, np.trace, np.diag, np.count_nonzero ) (0) | 2025.04.10 |
---|---|
[Numpy] 배열 반복과 조건/정렬 함수 (np.repeat, np.unique, ...) (0) | 2025.04.08 |
[Numpy] 배열 분해와 반복생성 (np.vstack, np.vsplit, ...) (0) | 2025.04.08 |
[Numpy] 배열 변형과 결합 함수 (0) | 2025.04.08 |
[Numpy] 배열 생성 함수 (0) | 2025.04.08 |