히비스서커스의 블로그

[Numpy] 2 dimension, 3 dimension array에서 slicing하기 본문

Programming/Python

[Numpy] 2 dimension, 3 dimension array에서 slicing하기

HibisCircus 2021. 6. 25. 18:53
728x90

매번 코드를 보다보면 느끼는 거지만 기본이 너무 중요한 것 같다. numpy에서 slicing을 어떻게 하는지 직관적으로 다시 이해하기 위하여 여러 실험을 진행해보았다. 좀 까다로운 2 dimension, 3 dimension array에서 slicing하는 것을 실험해보았다. 다시는 잊어버리지 말자!

 

https://predictivehacks.com/tips-about-numpy-arrays/

 

 

2 dimension이든 3 dimension이든 slicing에서 잊지 말아야할 규칙은 가장 첫번째 인자가장 바깥의 array를 slicing한다는 것이다. 이후는 순차적으로 접근을 하면 된다. 실험을 통해 살펴보자.

 

 

2 dimension

첫번째 인자를 1:3으로 slicing을 하였고 두번째 인자를 0:2로 slicing을 진행하였다. 그림으로 살펴보면 다음과 같다.

먼저 첫번째 slicing(1:3)으로 인해 [[5, 6, 7, 8], [9, 10, 11, 12]] array로 slicing 되었다. 

그 후 두번째 slicing(0:2)으로 인해 [[5, 6], [9, 10]] array로 slicing 되었다.

 

 

3 dimension

이번에는 조금 더 복잡한 3 dimension array에 대해 진행하였다. 

 

첫번째 인자를 1로 slicing을 하였고 두번째 인자를 1:3로 세번째 인자를 0:2로 slicing을 진행하였다. 그림으로 살펴보면 다음과 같다.

먼저 첫번째 slicing(1)으로 인해 [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']] array로 slicing 되었다.

그 후 두번째 slicing(1:3)으로 인해 [['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l']] array로 slicing 되었다.

마지막으로 세번째 slicing(0:2)로 인해 [['e', 'f'], ['i', 'j']] array로 slicing이 되었다.

 

 

활용

 

만약 RGB 채널을 가진 이미지 array에 대하여 R, G, B값을 각각 뽑아내고 싶다면

 

R_array = RBG_array[:, :, 0]
G_array = RBG_array[:, :, 1]
B_array = RBG_array[:, :, 2] 

과 같이 코딩을 진행하여 진행할 수 있다!

 

 

-히비스서커스-

728x90