Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 NumPy 2차원 배열을 1차원 배열로 병합하는 방법

NumPy의 2차원(2D) 배열은 배열 안에 배열이 중첩된 구조입니다. 이 글에서는 이러한 다차원 배열을 평탄화하여 모든 요소를 하나의 1차원(1D) 배열로 만드는 방법을 소개합니다.

flatten() 함수 사용하기

NumPy의 flatten() 함수는 2차원 배열을 1차원 배열로 변환하는 가장 직관적이고 간단한 방법입니다.

예제

import numpy as np
array2D = np.array([[31, 12, 43], [21, 9, 16], [0, 9, 0]])
# 초기 배열 출력
print("Given array:\n",array2D)
# flatten() 사용
res = array2D.flatten()
# 결과 출력
print("Flattened array:\n ", res)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given array:
[[31 12 43]
[21 9 16]
[ 0 9 0]]
Flattened array:
[31 12 43 21 9 16 0 9 0]

ravel() 함수 사용하기

ravel() 함수도 마찬가지로 2차원 배열을 1차원으로 평탄화하는 기능을 제공하며, 사용법은 flatten()과 거의 동일합니다.

예제

import numpy as np
array2D = np.array([[31, 12, 43], [21, 9, 16], [0, 9, 0]])
# 초기 배열 출력
print("Given array:\n",array2D)
# ravel() 사용
res = array2D.ravel()
# 결과 출력
print("Flattened array:\n ", res)

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given array:
[[31 12 43]
[21 9 16]
[ 0 9 0]]
Flattened array:
[31 12 43 21 9 16 0 9 0]

flatten()과 ravel()의 차이점

두 함수 모두 동일한 1차원 배열을 반환하지만, 내부적으로 중요한 차이가 있으므로 상황에 맞게 선택하는 것이 좋습니다.

  • flatten(): 항상 원본 배열의 복사본(copy)을 새로 생성해 반환합니다. 원본 배열이 변경되어도 영향을 받지 않지만, 그만큼 메모리를 추가로 사용합니다.
  • ravel(): 가능한 경우 원본 배열의 뷰(view)를 반환하므로 메모리 효율성이 더 뛰어납니다. 단, 반환된 배열을 수정하면 원본 배열의 값도 함께 변경될 수 있다는 점에 주의해야 합니다.

원본 데이터를 보존해야 한다면 flatten()을, 대용량 배열을 다루며 메모리 절약이 중요하다면 ravel()을 사용하는 것이 권장됩니다.