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

NumPy 배열 연결 완벽 가이드: concatenate() 메서드 활용법

NumPy 배열 연결 방법

NumPy는 파이썬에서 배열을 다룰 때 가장 널리 사용되는 라이브러리입니다. 배열 생성부터 조작까지 모든 크기의 배열 작업을 폭넓게 지원하며, 당연하게도 배열을 연결(concatenate)하는 유틸리티도 함께 제공합니다.

numpy.concatenate() 메서드는 두 개 이상의 배열을 하나의 배열로 합쳐주는 기능을 합니다.

이 가이드에서는 NumPy 배열이 무엇인지, 그리고 배열을 어떻게 연결하는지 살펴보겠습니다. 바로 실습에 적용할 수 있도록 몇 가지 예제도 함께 준비했습니다.

배열의 구조

NumPy 배열은 NumPy 라이브러리와 함께 사용되는 배열 타입입니다. 겉보기에는 일반적인 배열과 비슷하지만, ndarray 객체 내부에 저장된다는 점이 특징입니다:

array([1, 2, 3])

NumPy 배열을 사용하려면 먼저 numpy 라이브러리를 임포트해야 합니다:

import numpy as np

이번 예제에서는 두 개의 배열을 연결해 보겠습니다. 첫 번째 배열에는 1부터 9까지(9 포함)의 숫자가, 두 번째 배열에는 10부터 18까지(18 포함)의 숫자가 들어갑니다.

arange() 메서드를 사용해 이 배열들을 만들어 보겠습니다:

first_array = np.arange(1, 10).reshape(3, 3)
second_array = np.arange(10, 19).reshape(3, 3)

print(first_array)
print(second_array)

이 코드는 두 개의 배열을 생성합니다. 각 배열은 reshape() 메서드를 통해 3×3 형태의 2차원 배열로 변환했습니다:

[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[10 11 12]
 [13 14 15]
 [16 17 18]]

이제 연결할 두 개의 배열이 준비되었습니다. concatenate()를 사용해 배열을 합쳐 보겠습니다.

NumPy 배열 연결하기

배열은 행(row) 또는 열(column), 두 축 중 하나를 기준으로 연결할 수 있으며, 이 작업은 concatenate() 메서드로 수행합니다. 이 메서드는 1차원, 2차원, 3차원, 4차원은 물론 그보다 더 높은 차원의 배열도 병합할 수 있습니다.

행 기준으로 연결하기

먼저 두 배열을 행 기준으로 연결해 보겠습니다. 이렇게 하면 두 배열의 요소들이 행 단위로 정렬되어 하나의 배열로 합쳐집니다:

final_array = np.concatenate((first_array, second_array))
print(final_array)

concatenate() 함수 안에 튜플을 지정했습니다. 이 튜플에는 연결하고자 하는 배열들의 목록이 담깁니다. 별도의 매개변수 없이 호출하면 concatenate()는 기본적으로 행(axis=0) 기준으로 연결합니다.

실행 결과는 다음과 같습니다:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]
 [16 17 18]]

두 배열이 행을 따라 성공적으로 연결되었습니다.

열 기준으로 연결하기

concatenate 메서드를 사용하면 두 배열을 열 기준으로도 병합할 수 있습니다.

이를 위해서는 새로운 매개변수인 axis를 사용해야 합니다. 기본값은 0이며, 이는 x축, 즉 행 축에 해당합니다. 이 값을 1로 설정하면 두 배열이 열을 기준으로 병합됩니다.

두 배열을 열 기준으로 연결해 보겠습니다:

final_array = np.concatenate((first_array, second_array), axis=1)
print(final_array)

코드는 앞선 예제와 거의 동일하지만, axis=1 매개변수를 지정했다는 점이 다릅니다. 실행 결과를 확인해 보겠습니다:

[[ 1  2  3 10 11 12]
 [ 4  5  6 13 14 15]
 [ 7  8  9 16 17 18]]

두 배열이 열을 따라 병합되었습니다.

세 개 이상의 배열 연결하기

concatenate() 메서드는 원하는 개수만큼의 배열을 연결할 수 있습니다. 이번에는 세 개의 배열을 가로 축(열 방향)으로 연결해 보겠습니다. 사용할 배열에는 다음 범위의 숫자가 담깁니다:

  • 1부터 9까지 (9 포함)
  • 10부터 18까지 (18 포함)
  • 19부터 27까지 (27 포함)

파이썬에서 배열을 정의해 보겠습니다:

first_array = np.arange(1, 10).reshape(3, 3)
second_array = np.arange(10, 19).reshape(3, 3)
third_array = np.arange(19, 28).reshape(3, 3)

다음으로 concatenate를 사용해 세 배열을 하나로 합칩니다:

final_array = np.concatenate((first_array, second_array, third_array), axis=1)
print(final_array)

concatenate() 메서드에 세 개의 배열을 튜플 형태로 전달했습니다. 이 배열들을 모두 합치면 1부터 27까지의 모든 숫자가 포함됩니다.

프로그램을 실행해 보겠습니다:

[[ 1  2  3 10 11 12 19 20 21]
 [ 4  5  6 13 14 15 22 23 24]
 [ 7  8  9 16 17 18 25 26 27]]

세 개의 배열이 "final_array" 변수에 할당되었고, 콘솔 출력 결과를 통해 배열들이 성공적으로 병합되었음을 확인할 수 있습니다.

마무리

NumPy의 concatenate() 메서드는 두 개 이상의 NumPy 배열을 하나로 합칩니다. 기본적으로 배열은 수직 축(행 방향)으로 연결되며, axis=1 옵션을 사용하면 수평 축(열 방향)으로 연결할 수 있습니다.

1차원 배열 두 개 이상을 연결할 때는 vstack과 hstack 메서드도 사용할 수 있습니다. 다만 concatenate()가 이들보다 더 효율적일 뿐 아니라, 2차원, 3차원 등 고차원 배열의 연결도 지원한다는 장점이 있습니다.

이제 여러분도 파이썬 전문가처럼 NumPy 배열을 자유롭게 연결할 준비가 되었습니다!