• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

Squeeze=False를 사용하는 이유

21.02.24 22:38 작성 조회수 676

1

안녕하세요, 혹시 subplots 생성시 squeeze=False를 사용하는 이유가 무엇인지 알 수 있을까요? 감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하십니까,

다른 이유가 있어서는 아니고 plt.subplots() 호출하면 Axis 객체가 반환되는데 이 Axis 객체가 2개의 원소를 가지는 Array 형태로 반환됩니다. 그런데 이게 nrows가 1, ncols가 2 로 해서 subplots()을 호출하다보니가 2개의 원소를 (1, 2)와 같은 2차원 형태로 반환할지, (2, )와 같은 1차원 형태로 반환할지를 squeeze가 결정합니다. squeeze가 True(Default 입니다) 이며 2차원(1, 2)를 압축(squeeze)해서 (2,)로 합니다.

그런데 이렇게 하다보면 

sns.violinplot(x='TARGET', y=column, data=df, ax=axs[0][0] )

에서 axs[0][0] 형태로(즉 2차원 형태로) 지정할 수 없습니다. axs[0] 형태로 지정해야 합니다.  그래서 예제 코드의 통일성을 위해  2차원 형태로 axs를 반환할 수 있도록 squeeze를 False로 설정한 것입니다.

그리고 squeeze = True로 설정하고 axs[0][0] 을 axs[0], axs[0][1]을 axs[1]로 설정만 violinplot 그릴때 문제가 발생해서(원인을 잘 모르겠습니다) 2차원 형태로 axs를 지정하기 위해서 squeeze=False로 정한 것입니다.

감사합니다.


넵 알겠습니다. 감사합니다!!