본문 바로가기
파이썬/파이썬기본문법

파이썬 numpy 배열 분할(splitting)

by flycoding 2023. 12. 14.
반응형

파이썬 numpy 배열 분할 - array_split()

분할은 조인의 역방향 작업이다.

결합은 여러 배열을 하나로 병합하고 분할은 하나의 배열을 여러 개로 분할한다.
배열을 분할할 때 array_split()을 사용하고, 분할할 배열과 분할 횟수를 전달한다.

배열을 세 부분으로 나눈다:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
print("arr : ", arr)

newarr = np.array_split(arr, 3)

print('newarr = np.array_split(arr, 3) : \n', newarr)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 array_spli() 함수 활용 예제

 

배열의 요소가 필요한 것보다 적으면 그에 따라 배열이 끝에서부터 조정된다.

배열을 네 부분으로 나눈다:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
print("arr : ", arr)

newarr = np.array_split(arr, 4)

print('newarr = np.array_split(arr, 4) : \n', newarr)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 array_spli() 함수 활용 예제

 

참고: 메서드 split()도 사용할 수 있지만 위의 예처럼 분할을 위해 요소가 소스 배열에 덜 포함되어 있으면 요소를 조정하지 않는다. array_split()은 제대로 작동했지만 split()은 실패한다.

 

파이썬 numpy 배열 - 배열로 분할 - array_split()

array_split() 메서드의 반환 값은 각 분할을 배열로 포함하는 배열이다.

배열을 3개의 배열로 분할하면 다른 배열 요소와 마찬가지로 결과에서 액세스할 수 있다:

분할된 배열에 액세스한다:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
print("arr : ", arr)

newarr = np.array_split(arr, 3)
print('array_split(arr, 3)')

print("newarr[0] : ", newarr[0])
print("newarr[1] : ", newarr[1])
print("newarr[2] : ", newarr[2])

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 array_spli() 함수 활용 예제

 

 

파이썬 numpy 배열 - 2차원 배열로 분할 - array_split()

2-D 배열을 분할할 때 동일한 구문을 사용한다.
array_split() 메서드를 사용하여 분할할 배열과 분할할 수를 전달한다.

2-D 배열을 3개의 2-D 배열로 나눈다.

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
print("arr : \n", arr)

newarr = np.array_split(arr, 3)

print('newarr = np.array_split(arr, 3) : \n', newarr)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 array_spli() -2차원 배열 함수 활용 예제

 

 

위의 예제는 3개의 2-D 배열을 반환한다.
또 다른 예로, 이번에는 2-D 배열의 각 요소에 3개의 요소가 포함되어 있다.

2-D 배열을 3개의 2-D 배열로 나눈다.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
print("arr : \n", arr)


newarr = np.array_split(arr, 3)

print('newarr = np.array_split(arr, 3) : \n', newarr)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 array_spli() -2차원 배열 함수 활용 예제

 

 

위의 예제는 3개의 2-D 배열을 반환한다.
또한 분할을 수행할 축을 지정할 수 있다.
아래 예제에서는 3개의 2-D 배열도 반환하지만 행(축=1)을 따라 분할된다.

2-D 배열을 행을 따라 3개의 2-D 배열로 나눕니다.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])
print("arr : \n", arr)


newarr = np.array_split(arr, 3, axis=1)

print('newarr = np.array_split(arr, 3, axis=1) : \n', newarr)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 array_spli() -2차원 배열 함수 활용 예제

 

 

대체 솔루션은 hstack()과 반대되는 hsplit()을 사용하는 것이다

hsplit() 방법을 사용하여 2-D 배열을 행을 따라 3개의 2-D 배열로 나눈다.

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]])

print("arr : \n", arr)

newarr = np.hsplit(arr, 3)

print('newarr = np.hsplit(arr, 3) : \n',newarr)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열 분할 hsplit() 함수 활용 예제

 

참고: vstack() 및 dstack()과 유사한 대안은 vsplit() 및 dsplit()로 제공된다.

 

지금까지 파이썬 numpy 배열 분할에 대해서 살펴보았다.

파이썬 numpy 배열 분할에 array_split(), hsplit(), vsplit(), dsplit() 함수에 대해서 살펴보았다.

꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.

모두 화이팅입니다.!!!

 

출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.

반응형

댓글