• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

numpy의 shape

23.03.03 17:02 작성 조회수 345

0

안녕하세요 인프런에서 강사님의 강의(파이썬을 활용한 머신러닝 딥러닝 입문)를 수강 중인 손승운입니다.

질문

'파이썬을 활용한 머신러닝 딥러닝 입문' 강의 12강 내용 7분 18초를 보면 주피터 노트에서는 z.shape의 값이 (axis2, axis0, axis1) 순서로 나오고 제가 직접 주피터노트에 실습한 결과도 동일했습니다.

하지만 7분 33초 중앙을 보면 shape를 (axis0, axis1, axis2)로 표현하셨는데, 이는 구글링을 통해 다른 사람들이 표현한 것과 같습니다.

그럼 (axis2, axis0, axis1)와 (axis0, axis1, axis2) 둘 중 어느 것이 맞는 표현인가요? 혹시 원래는 (axis0, axis1, axis2)로 표현해야 하지만 numpy를 활용해 shape를 볼 때만 (axis2, axis0, axis1)로 표현되는 건가요?

강사님의 강의 덕에 머신러닝 개발자가 되는데 한걸음 내딛을 수 있었습니다. 감사합니다. 편하신 시간에 답변주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

1

그림과 numpy array를 matching 하면서 혼동이 되신 것 같습니다. 또한 우연히 shape 이 (2, 2, 3) 가 되어서 axis 0과 axis 1 의 위치가 헷갈리신 것으로 생각됩니다. 그냥 simple 하게 생각하시면 됩니다.

예를 들어 numpy array의 shape 이 (3, 2, 4) 면 그냥 앞에서 부터 axis 0, 1, 2 입니다. 즉, 첫번째 인 3 이 axis 0, 2 가 axis 1, 4 가 axis2 입니다. 구체적으로

x = np.array([[[1, 2, 3, 4], [3, 2, 5, 4]],
[[1, 7, 8, 5], [5, 4, 6, 6]],
[[9, 8, 7, 7], [6, 5, 4, 1]]]) 인 경우 shape은

(3, 2, 4) 인데 axis 는 그냥 처음 부터 0, 1, 2 입니다.

그림은 그냥 이해를 돕기 위해 시각화한 것이므로 여기에 맞추어서 숫자를 대입해 보세요.

좋은질문 감사합니다.

thstmddns님의 프로필

thstmddns

질문자

2023.03.04

좋은 답변 감사합니다

thstmddns님의 프로필

thstmddns

질문자

2023.03.04

앗 제가 잘못이해한 부분이 있었네요. 전 2차원에서

행 방향은 axis=0이고

열 방향은 axis=1이라,

차원이 높아져도 고정이라 생각했었습니다. 즉, 3차원은

행 방향은 axis=0이고

열 방향은 axis=1으로 고정인데,

높이가 axis=2로 추가된 것으로 생각했습니다.

하지만 강사님께서 답변해주신 내용을 토대로 구글링을 해보니 n차원의 axis는 n-1차원의 axis에서 axis=n를 추가하는 것이 아니었네요.

0~n까지의 axis는 큰 단위의 리스트(=바깥쪽 리스트?)에서 제일 작은 리스트의 인자의 수까지를 차례로 연결한 것이지요?

검색 후 강사님 강의를 다시 들으니 이해가 됐습니다. 감사합니다!!!