Numpy 배열의 차원을 추가하는 expand_dims 사용법을 파악해보려고 테스트해본 내용입니다.
파이썬 인터프리터에서 진행했기 때문에 차례대로 코드를 실행해 봐야 합니다.
2021. 9. 15 - 최초작성
테스트에 사용할 1차원 넘파이 배열 x를 생성합니다.
넘파이 배열의 원소가 2개 이기 때문에 넘파이 배열의 shape는 (2, ) 입니다.
>>> import numpy as np >>> x = np.array([3, 4]) >>> x array([3, 4]) >>> x.shape (2,) |
참고로 넘파이 배열의 shape 출력 결과에서 다음 순서대로 축의 순서가 정해집니다.
(첫번째 축, 두번째 축, 세번째 축, … )
참고로 이 부분을 시각화하여 설명한 내용은 제가 쓴 책인 “파이썬과 NumPy로 배우는 선형대수”의 63페이지에 넘파이 배열 시각화 방법으로 설명되어 있습니다.
또는 아래 이미지를 보세요.(출처 - https://i.ytimg.com/vi/cwzGiiX59aw/maxresdefault.jpg )
첫번째 축에 차원을 추가합니다. expand_dims 대신에 x[np.newaxis, :] 또는 x[np.newaxis]를 사용할 수 도 있습니다.
넘파이 배열의 shape 출력 결과를 보면 원래 (2,)에서 (1, 2)로 변경된 것을 볼 수 있습니다.
첫번째 축에 차원이 추가되어 2 앞에 1이 추가된 것입니다.
>>> y = np.expand_dims(x, axis=0) >>> y array([[3, 4]]) >>> y.shape (1, 2) |
>>> y = x[np.newaxis, : ] >>> y array([[3, 4]]) >>> y.shape (1, 2) |
두번째 축에 차원을 추가합니다. expand_dims 대신에 x[ :, np.newaxis]를 사용할 수도 있습니다.
넘파이 배열의 shape 출력 결과를 보면 원래 (2,)에서 (2, 1)로 변경된 것을 볼 수 있습니다.
두번째 축에 차원이 추가되어 2 뒤에 1이 추가된 것입니다.
>>> y = np.expand_dims(x, axis=1) >>> y array([[3], [4]]) >>> y.shape (2, 1) |
>>> y =x[ :, np.newaxis] >>> y array([[3], [4]]) >>> y.shape (2, 1) |
튜플을 사용하여 2개의 축에 차원을 한꺼번에 추가할 수도 있습니다.
>>> y = np.expand_dims(x, axis=(0, 1)) >>> y array([[[3, 4]]]) >>> y.shape (1, 1, 2) |
>>> y = np.expand_dims(x, axis=(2, 0)) >>> y array([[[3], [4]]]) >>> y.shape (1, 2, 1) |
>>> y = np.expand_dims(x, axis=(0, 2)) >>> y array([[[3], [4]]]) >>> y.shape (1, 2, 1) |
앞에서 사용한 np.newaxis 대신에 None을 사용할 수도 있다고 합니다.
다음처럼 이 둘이 같은 객체라는 것을 확인할 수 있습니다.
np.newaxis is None True |
참고
https://numpy.org/doc/stable/reference/generated/numpy.expand_dims.html
'Python > Numpy' 카테고리의 다른 글
np.kron를 사용하여 NumPy 배열을 확대하기 (0) | 2024.05.16 |
---|---|
Numpy - 넘파이 배열을 파일로 저장하고 로드하는 예제 (0) | 2023.11.03 |
두 개의 넘파이 배열을 같은 순서로 정렬하기 (0) | 2023.10.21 |
Numpy Array 이미지를 하나의 Numpy Array로 합쳤다가 분리하기 (0) | 2022.12.08 |
Python Numpy 배열 크기 확인 getsizeof , nbytes (0) | 2022.01.22 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!