[Python] broadcasting 오류 및 keepdims 사용법

qw4735·2023년 2월 21일
0

Python

목록 보기
4/10
post-custom-banner

axis = 0 : column 기준 / axis = 1 : row 기준

v = np.array([[1,2],[3,4]])   
v.sum(axis=0) # column 합  # array([4, 6])
v.sum(axis=1) # row 합  # array([3, 7])

np.reshape()

: 배열 차원을 재구조화 및 변경하고자 할 때 reshape() 함수 사용

a = np.arange(1,5)  #(4,)
a.reshape(-1,1)  # (4,1)
np.reshape(a,(-1,1))
a[:,None] # (4,1)

broadcasting

차원이 다른 경우 브로드캐스팅이 될 때가 있고 안될 때가 있는데,
axis = 1로 연산을 했을 경우 브로드캐스팅 연산이 불가능한 경우, 다음과 같은 에러 발생

\rightarrow 이 경우, (3,)를 (3,1)로 변경해주면 된다.

But, 매번 차원을 바꿔주기 귀찮으니 이때 사용하는 것이 바로 keepdims이다.
keepdims를 적용하면 차원이 사라졌던 부분이 1로 바뀌면서 shape와 관계 없이 브로드캐스팅이 가능한 상태가 된다.

keepedims

a = np.arange(12).reshape((3,-1))  # (3,4)
>> array([[ 0,  1,  2,  3],
          [ 4,  5,  6,  7],
          [ 8,  9, 10, 11]])
np.sum(a, axis=0)                # (4,)
>> array([12, 15, 18, 21])
np.sum(a, axis=0, keepdims=True) # (1,4)
>> array([[12, 15, 18, 21]])

reference : https://domybestinlife.tistory.com/149
https://yeko90.tistory.com/entry/%EB%84%98%ED%8C%8C%EC%9D%B4-%EA%B8%B0%EC%B4%88-axis-keepdims-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0

post-custom-banner

0개의 댓글