본문 바로가기

AI/Framework

numpy.newaxis 와 reshape

numpy라는 유명 라이브러리의 newaxis 요 표현은 무엇이냐?

 

간단히 이야기 해서 존재하는 numpy array의 차원을 늘려준다 보시면 되겠습니다.

 

 

 

 

첫번째,

 

1D array를 row vector나 column vector로 사용하고 싶을 경우지요.

 

아시다시피 numpy에서 array를 만들면 shape이 ..

x자리만 4고 y자리는 공란입니다.

 

vector로 보고 indexing을 한다던지 연산을 한다던지 해도 껄끄러운 상태겠네요.

 

여기에 아래와 같이 장난을 처봅시다.

 

그러면 아주 간단하게 해결 됩니다.

 

두번째,

 

numpy broadcasting이라고 shape이 다른 array간 연산을 할때도  유용합니다.

 

일단 한번 봐야되니까 아래와 같이 모양이 다른 array끼리 덧셈 한번 해봅시다.

세번째,

 

 

아.. array라는 단순한 녀석을 좀 더 고차원으로 만들고 싶다면??...

 

그렇다면 위에서 해봤던 것의 응용 연장선으로 아래와 한번 이상 사용하면 2차 이상의 array를 만들어낼수 있습니다.

 

reshape vs newaxis ?

 

그런데 여기서 python이나 matlab등에 경험이 있으신 분들은

 

reshape라는 기능을 쓰면 되지 않느냐라고 반문 하실수 있겠네요.

 

하지만 reshape는 변환전 차원의 합과 변환후 차원의 합이 같아야 합니다.

 

(4,1)을 변환한다는 기준으로 (2,2)는 reshape 가능한데 (4,1)을 (3,3)으로 부꿀수는 없다는 게 제약이 있는 거죠.

 

* 4개의 원소를 2by2로 재배열한다는 느낌이 reshape인겁니다. 없는 걸 만들어내는 놈은 아닌거죠.

 

 

 

 

 

 

[numpy #1] "numpy.newaxis"는 무엇이고 언제사용하는가

필자의 소개는 다음으로 미루고 오후쯤인가 scikit learn이라는 machine learning library의 tutorial을 막 보기시작하다가 저도 궁금해서 찾아봤던 내용에 대해서 남겨볼까 합니다. 아주 잘 정리되어 있는 m

azanewta.tistory.com


array라는 단순한 녀석을 좀 더 고차원으로 만들고 싶다면??...

 

그렇다면 위에서 해봤던 것의 응용 연장선으로 아래와 한번 이상 사용하면 2차 이상의 array를 만들어낼수 있습니다.

 

reshape vs newaxis ?

 

그런데 여기서 python이나 matlab등에 경험이 있으신 분들은

 

reshape라는 기능을 쓰면 되지 않느냐라고 반문 하실수 있겠네요.

 

하지만 reshape는 변환전 차원의 합과 변환후 차원의 합이 같아야 합니다.

 

(4,1)을 변환한다는 기준으로 (2,2)는 reshape 가능한데 (4,1)을 (3,3)으로 부꿀수는 없다는 게 제약이 있는 거죠.

 

* 4개의 원소를 2by2로 재배열한다는 느낌이 reshape인겁니다. 없는 걸 만들어내는 놈은 아닌거죠.

 

newaxis = None

 

그리고 newaxis는 None과 같습니다.

 

newaxis가 생각 안나면 None을 써도 무방하다는 이야기 입니다..