안녕하세요 준세입니다.
이 블로그는 제가 공부한 것을 정리하는 블로그입니다.
유튜브나 책을 보고 공부한 것을 확인하고 기록하려고 합니다.
Numpy 란?
- Numpy는 OpenCV-Python 모듈의 필수 라이브러리 이기도 하며 배열이나 행렬 계산들을 빠르고 간편하게 해결하기 위한 라이브러리입니다.
- Numpy를 활용하여 배열과 행렬 생성부터 연산까지 차례대로 진행합니다.
- Numpy는 Colab을 이용하여 공부하였으며 책은 '파이썬으로 만드는 OpenCV 프로젝트 : 간단한 영상 입출력부터 머신러닝까지'로 공부하였습니다.
배열 생성
- 배열을 생성할 때 많은 방법으로 생성할 수 있지만 값을 가지고 있는 경우에는 array 함수로 간단하게 생성할 수 있습니다.
- a는 1차원 array를 만든 것이며 b는 2차원, c는 3차원이며 그림을 보시면 이해가 빠르게 될 것입니다.
배열 속성
- 위에서 array로 만든 배열의 속성을 알 수 있는 함수들입니다.
ndim : 배열의 차원 혹은 축의 수를 알 수 있습니다. C의 경우 3차원으로 만들었는데 왜 2가 나오는 거지..
shape : 배열의 크기를 튜플 형식으로 알 수 있습니다. (rows, cols) 형태로 나타냅니다.
dtype : 배열 원소의 종류를 알 수 있습니다
size : 원소의 개수입니다.
itemsize : 각 요소의 바이트 단위로 크기를 알 수 있습니다. 한 요소의 크기가 8바이트라는 것을 나타냅니다.
nbytes : size x itemsize입니다.
strides : 다음 요소로 넘어갈 때의 바이트 수를 나타냅니다. (1,2,3)에서 1에서 2로 넘어갈 때 8차원을 넘어갈 때는 24를 나타냅니다.
배열 인덱싱(indexing)
- NumPy의 배열은 파이썬 리스트 처럼 인덱스로 요소에 접근 가능합니다.
1차원일 때는 상관없지만 2차원 일때는 요소의 위치를 정확히 해줘야 원하는 요소에 접근할 수 있습니다.
- 인덱스를 행 단위로 지정한다면 브로드캐스팅 연산되어 해당 단위 모두를 같은 값으로 변경합니다.
- 2차원 일 경우 [ row , col ] 구성 입니다.
배열 슬라이싱(Slicing)
- 인덱스 자리에 콜론( : )로 범위를 지정하면 슬라이싱이 가능합니다. 이때 끝 인덱스는 슬라이싱 결과에 나오지 않습니다.
- [ start : end : step ]의 구성이며 start와 end는 생략하면 처음부터 끝까지이며 step을 생략 시 1 단위로 실행됩니다.
팬시 인덱싱(Fancy indexing)
- 인덱스에서 다른 배열을 전달해 원하는 요소를 얻는 방법입니다.
- 전달하는 배열에 숫자를 포함하고 있으면 해당 인덱스에 맞게 출력되고 배열에 bool 값을 넣으면 True 인 값만 출력합니다.
Numpy는 OpenCV에 기본적인 라이브러리라 기초부터 공부하고 있으며 정리가 미흡하거나
틀린 내용이 있으면 댓글로 남겨 주시길 바랍니다.
감사합니다.
'Python > Python 정리' 카테고리의 다른 글
[Python] 가정 설정문 assert 정리 (0) | 2021.06.07 |
---|---|
[Python] __call__ 함수 정리 (2) | 2021.06.06 |
[Python] *args와 **kwargs 정리 (0) | 2021.05.23 |
[Python] if __name__ == "__main__" 정리 (0) | 2021.05.09 |
[Python] 클래스(Class) (0) | 2021.05.05 |