NumPY는 벡터 행렬계산을 효율적으로 처리하기 위한 모듈로 Numeric 모듈과 Numarray 모듈이 합쳐져 높은 수준의 다차원 배열 계산을 고속 및 효율적으로 처리할 수 있다. 역시 pip 로 설치할 수 있다. pip로 opencv-python을 설치할 때 numpy는 자동으로 설치가 되는데 영상을 다룰때 numpy는 꼭 필요한 lib이기 때문이다.
하지만 NumPY만으로는 무언가를 할 수는 없다. NumPY는 데이타를 가공하는 도구일 뿐이기 때문이다. NumPY를 통해 1차적으로 가공된 다차원배열의 데이타( 영상같은 )를 가지고 opencv 같이 필요한 모듈에서 사용하는 것이다.
NumPY, Scipy, Matplotlib와 opencv-python에 대해 정리를 할 것이다. 따로 Python 문법에 대해서는 언급하지 않을 것이다. python 문법은 간단하기 때문에 필요 모듈을 공부하다 보면 자연스럽게 익혀지게 될 것이다.
아래 사이트는 Python의 자료형 및 NumPy 및 영상처리를 위한 Scipy와 Matplotlib에 대한 내용이 있다.
4. 인덱싱, 슬라이싱, 전치, 형태변경, 연결, 연산을 이용한 다차원 배열 현태 변경하기
5. 브로드캐스팅, 벡터화 연산 NumPY 고급기능
순서대로 공부를 진행할 예정이다.
첫 번째로 '1. NumPY 개요'에 대해서 공부를 해보자.
NumPY는 거의 모든 Python lib 모듈을 사용하는데 있어 기본이 된다.
NumPy 존재이유
NumPY는 Pandas, Scikit-learn, Tensorflow등 데이터 사이언스 분야에서 사용되는 라이브러리들의 토대가 되는 라이브러리이다. NumPY 는 높은 수준의 데이터 분석 기능을 제공하지 않지만 NumPY를 활용해 Python상에서 표현하고 다룰 줄 알아야만 데이터 분석이라는 그 이후 단계로 나아갈 수 있다. NumPY만으로는 머신러닝을 할 수 없다. NumPY는 다차원 배열이라는 ndarray를 데이타로 나나태는 특화된 라이브러리이다. NumPY를 사용해서 데이타를 분석하거나 머신러닝 코드를 짜는게 목적이기 때문에 라이브러리로써 사용할 줄 알게 되면 된다. 다시 말해 NumPY는 다차원 배열을 나타내기 위한 라이브러리이다.
Python에는 list라는 컨테이너가 있다. 이 list안에 list를 중첩시킴으로써 다차원 배열을 나타낼 수 있다. Python의 list와 NumPY는 무엇이 다를까? Python의 list에 접근하기 위해서는 for문을 사용하고 1차원에서 2차원으로 데이터의 차원이 증가하면 반복문도 중첩되게 사용하게 되어 데이터의 차원이 증가할수록 코드는 복잡해질 수밖에 없다. NumPY를 사용하면 다차원배열을 효율적으로 다룰 수 있고 C로 구현되어 있는 NumPY보다 Python의 list가 느리다.
NumPY 사용 예
결과 값
NumPY 장점
코어부분이 C로 구현되어 동일한 연산을 하더라도 Python에 비해 속도가 빠르다.
라이브러리에 구현되어있는 함수들을 활용해 짧고 간결한 코드 작성이 가능하다.
효율적인 메모리 사용이 가능하도록 구현되어 있다.
NumPY는 다차원 배열을 내부에 구현되어 있는 메소들을 사용하여 편리하게 사용, 나타낼 수 있으며 빠르기 때문에 많이 사용된다.
ndarray가 list보다 빠른 이유
ndarrary vs list 구조
그림에서 보면 Python list에는 데이터가 들어있지 않고 데이터를 가르키는 포인터, 주소값이 들어가 있다. NumPY이는 C 배열처럼 연속적으로 데이터가 그대로 입력되어 있어 구조상으로 차이가 난다. NumPY는 이 데이터를 C 반복문으로 순회하고 Python은 Python 반복문으로 순회하기 때문에 구조적으로 언어적으로 속도의 차이가 발생한다.
링크를 클릭하여 설치할 Python을 다운 받는다. 나는 3.7.3 windwos 버전을 받아 설치했다.
Python 3.7.3 Windows version download
설치시 꼭 환경 설정 체크박스에 체크하자. 안그러면 설치 후 따로 환경설정을 해야 한다. 그 외에는 언제나 그렇듯이 'Next' 이다.
Python 설치 시 꼭 PATH에 체크하자.
Python 설치가 끝나면 windows console 창을 실행 시켜 Python, pip 설치 여부를 확인하자
Python이 제대로 설치되어 있는 것을 확인했다. 이제 Python 가상환경인 virtualenv를 pip를 이용해서 설치해 본다.
virtualenv를 설치할 장소는 python을 설치한 곳으로 python 개발환경의 원본이 있는 곳으로 virtualenv는 글로벌하게 이 곳, 딱 한군데에 설치한다. 후에 설치된 virtualenv로 필요한 곳에 가상환경 폴더를 만들고 만들어진 가상환경 폴더에서 pip를 이용하여 작업에 필요한 여러 python 라이브러리를 설치하면 된다.
virtualenv 설치 및 버전확인
가상환경, 실제 프로젝트에서 사용할 컴파일 환경을 만든다.
원하는 위치에 가상환경을 만들었다.
가상환경 폴더 아래에 있는 Scripts 폴더
이 가상환경을 사용하는 프로젝트는 Scripts폴더에 있는 Python을 사용하여 컴파일을 하고 pip로 install한 lib를 사용하게 된다.
이제 설치한 가상환경에 pip를 이용하여 이 가상환경에서만 사용할 openCV를 설치해본다. 가상환경에 라이브러리를 설치하려면 먼저 가상환경을 활성화 시켜야 한다. 가상환경을 활성하, 비활성화하는 명령은 \Scripts 폴더 밑의 'activate'/'deactivate' 명령어이다.
activate로 활성화 시켰다가 deactivate로 비화설화 시킨 상태
activate로 가상환경을 활성화 시키며 앞에 가상환경 폴더명이 나오는 것을 볼 수 있다. 이 상태에서 pip로 라이브러리를 설치하는 것이다.
OpenCV 설치화면
OpenCV를 설치 후 확인을 위해 Python을 실행시켜 버전 프린트
다음은 마지막으로 파이참 설치 후 virtualenv로 만든 가상환경을 파이참 프로젝트에 셋팅하여 확인해보자