작성
·
324
0
안녕하세요 5-2 배열의 형태 변경 2 에서 질문이 있습니다.
arr=arr.reshape(3,-1)
-> shape값에 -1 넣게 되면 shape 값이 자동으로 계산되어 자동으로 4가 나온다
arr=arr.reshape(3,2,-1)
-> shape값 -1에 자동으로 2라는 배열이 채워져 3차원 배열이 출력된다
라고 말씀하셨는데, 어떤 원리에서 이처럼 작동되는지 이해가 안가서요 ㅜㅜ
어떠한 수를 더하거나 빼는 것 같진 않은데..
혹시 좀 더 자세히 설명해주실 수 있을까요?
감사합니다!
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
reshape 함수에서 -1은 자동 계산 모드를 의미해요. 그러면 numpy가 배열 전체 크기를 유지하면서 다른 차원 크기를 계산하게 도와줍니다.
예를 들어 arr.reshape(3,-1)을 실행하는 경우, numpy는 배열의 총 원소 개수를 유지하면서 3개의 행으로 배열을 재형성하려고 해요. 그래서 두 번째 차원 크기를 계산해야 하는데, 이때 -1을 설정하면 numpy가 자동으로 두 번째 차원 크기를 계산하여 채워 넣게 됩니다. 이 경우에는 4개의 열이 필요하다는 것을 numpy가 알아내어 3x4 모양의 배열을 반환하게 되죠.
마찬가지로 arr.reshape(3,2,-1)을 실행하는 경우, 3x2x-1 모양의 배열을 만들려고 합니다. 여기서 -1을 설정하면 numpy가 자동으로 두 번째 차원 크기를 계산하여 채워넣게 됩니다. 이 경우에는 자동으로 2가 채워져서 3x2x2 모양의 배열을 반환하게 되어요.
즉, -1을 설정하게 되면 numpy가 자동으로 크기를 계산해서 재배열을 수행하는 것입니다. 잘 이해되셨나요? 추가적인 질문 있으시면 언제든지 물어보세요!