파이썬 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) |
위의 코드를 실행하면 아래 그림과 같다.
배열의 요소가 필요한 것보다 적으면 그에 따라 배열이 끝에서부터 조정된다.
배열을 네 부분으로 나눈다:
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) |
위의 코드를 실행하면 아래 그림과 같다.
참고: 메서드 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 배열 - 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) |
위의 코드를 실행하면 아래 그림과 같다.
위의 예제는 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) |
위의 코드를 실행하면 아래 그림과 같다.
위의 예제는 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) |
위의 코드를 실행하면 아래 그림과 같다.
대체 솔루션은 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) |
위의 코드를 실행하면 아래 그림과 같다.
참고: vstack() 및 dstack()과 유사한 대안은 vsplit() 및 dsplit()로 제공된다.
지금까지 파이썬 numpy 배열 분할에 대해서 살펴보았다.
파이썬 numpy 배열 분할에 array_split(), hsplit(), vsplit(), dsplit() 함수에 대해서 살펴보았다.
꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.
모두 화이팅입니다.!!!
출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.
'파이썬 > 파이썬기본문법' 카테고리의 다른 글
파이썬 numpy 배열 정렬 (0) | 2023.12.16 |
---|---|
파이썬 numpy 배열 검색 (0) | 2023.12.15 |
파이썬 numpy 배열 결합(Join) (0) | 2023.12.13 |
파이썬 numpy 배열 반복(Array Iterating) (0) | 2023.12.11 |
파이썬 numpy 배열 재구성 (1) | 2023.12.10 |
댓글