reshape(-1)의 의미

YoungJoon Suh·2022년 10월 22일
0

reshape(-1, 2) 혹은 reshape(3, -1) 처럼 reshape() 메소드 안에 '-1'이 들어가 있는 경우가 있습니다. 이때 reshape()의 '-1'이 의미하는 바는, 변경된 배열의 '-1' 위치의 차원은 "원래 배열의 길이와 남은 차원으로 부터 "추정"이 된다는 뜻입니다. (One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions.)
import numpy as np

x = np.arange(12).reshape(3, 4)

x.shape
(3, 4)

x.reshape(-1)은 x.reshape(1, -1)과 같이 1차원 배열을 반환합니다.
"axis = 0 이 가장 바깥차원 방향 axis = 1이 그 다음 차원방향이다."
axis를 통해 연산을 하면 한차원이 다운그레이드되면서 shape의 모양이 바뀌게 됩니다.
연산을 수행하기 위해서 넘파이는 계산하게될 두 데이터값의 shape을 맞춰주는 작업을 합니다. b의 shape (1,3)으로 A shape과 다르므로 (3,3)으로 변경시켜 줍니다. 변경 시켜줄 때 기존에 있는 값을 복사하면서 같은 shape으로 만들어 줍니다.
2차원이든 3차원이든 상관없이 우리는 1을 주목하고 그값을 변경하면 모든게 해결되었습니다. 하지만 오늘 배운 내용은 A, B 둘의 shape은 달랐지만 차원은 같았습니다.

차원이 다를 경우의 broadcasting
차원이 작은 쪽의 shape이 우측정렬한다고 했을 때 완전히 포개어지는가로 확인해 볼 수 있습니다.
원론적으로 말하자면 (4,3,4)는 (3,4)로 이루어진 행렬이다.
(4,3,4)는 (3,4)의 행렬이 4개 있다는 말이다.
keepdims를 적용하자 차원이 죽으면서 사라졌던 부분이 숫자 1로 바뀌면서 shape과 관계 없이 브로드캐스팅이 가능한 상태가 되었네요!

profile
저는 서영준 입니다.

0개의 댓글

관련 채용 정보