미국 공학박사의 코딩 연구소

Numpy 이용하여 로봇 위치들을 동영상으로 보여주기

Python에서 가장 중요하고 빈번하게 사용되는 라이브러리(library) 중 하나인 Numpy를 공부해 볼까요?


강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




Numpy 설치하기

Numpy를 설치해야 하는데, 사실, Numpy는 Ubuntu에 이미 설치되어 있을 거예요.
설치가 되었는지 확인하는 방법은요, 먼저 터미널 (Terminal)을 열고, 아래에서 줄1과 같이 python3 명령을 실행해 보세요. 그러면, 터미널 상에서 python 코드를 입력/실행할 수 있어요.
줄5와 같이 numpy를 import하는 코드를 실행해 보세요. 만약, 아래에서 처럼 아무런 에러 메세지도 출력되지 않는다면, numpy 라이브러리가 이미 설치되어 있는 것이죠. 그렇지 않다면, numpy가 설치되어 있지 않은 거예요.
자, 이제 줄8처럼 quit()을 실행해서 python모드에서 탈출하세요.

만약, numpy가 설치되어 있지 않다면, 아래와 같이 명령을 실행하여 numpy 라이브러리를 설치하세요.
이전에 강의 로봇 경로 만들기에서도 설명했듯이, pip 이란, Python으로 작성된 라이브러리와 같은 소프트웨어들을 설치하고 관리할 수 있게 도와주는 시스템이랍니다.




Numpy의 array 이해하기

새로운 Python코딩을 하고자 하니, 역시나 새로운 Python파일을 만들어 봐야 겠죠? 이제 다들 어떻게 하는지 안다고 믿어요. (복습이 필요한 사람들은 여기로 가보세요.)
원하는 폴더에 "lec5_footage_numpy.py"라는 파일을 생성해서 코딩해 보는 것으로 하지요.

아래에 보이는 것처럼, 먼저, 이번에도 그래프를 만들 거니까, 줄1처럼 matplotlib를 import하구요. 새로 공부할 numpy라이브러리도 줄2와 같이 import해 보지요. 단, 별명은 np로 할 거랍니다.

자, 이제 numpy에서 빈번하게 사용되는 array를 공부해 보지요.
먼저, array의 개념부터 짚어 볼까요? (아래 설명은 문법 노트에서도 볼 수 있다는 것 알고 있지요?)

[문법] Array

위 설명에서도 언급했듯이, 배열을 구현하기 위해 우리는 지금까지 리스트를 사용해 왔어요. 이전 강의들에서 로봇 좌표들을 리스트로 구현했었죠? 그것이 바로 배열이었답니다.

그런데, 배열들을 구현하는 또 다른 방법이 있어요. 바로, numpy 라이브러리의 array함수를 이용하는 것이죠. 사실, 많은 코드들에서 그 다재다능함 때문에 numpy의 array를 주로 이용해요. 그래서 꼭 알아두어야 한답니다. (아래 설명은 라이브러리 노트에서도 볼 수 있다는 것 알고 있지요?)

[라이브러리] Numpy의 array()




동영상으로 보여주기

이제, numpy의 array를 이용하여 이전 강의 로봇 위치들을 동영상으로 보여주기에서 처럼 로봇의 위치들을 하나씩 보여주는 코딩을 해 보지요.

이전에는 로봇의 위치 좌표들을 리스트를 이용해서
x = [0, 1, 3, 3, 4.5, 5, 6, 7]
y = [0, 2, 3, 4, 6, 7, 8, 9]
라고 정의 했었죠?
이번에는 아래의 줄4처럼 numpy의 array를 이용해서 2차원 배열을 선언해 보지요. 즉, 1행은 x 좌표들, 2행은 y 좌표들을 나타낸답니다.

그리고, 다음과 같이 for 문을 이용해서 각 위치를 하나씩 보여주도록 할게요.

줄6과 줄7은 각 축의 범위를 정하는 리스트를 선언했어요.

그리고, 이미 눈치 챘는지 모르겠는데요. 이전과는 다른 방식으로 동영상처럼 보여주는 코드를 작성했지요? 즉, add_subplot(), set_xdata(), set_ydata() 함수 등을 이용하기 보다는, 위의 줄9에서 그냥 figure만 만들어 놓고, 그 figure를 줄12에서 매번 지우고, 줄13과 줄14에서 다시 그리고를 반복하면서 동영상처럼 보여준답니다.
줄12의 clf()함수는 이미 그려져 있는 그래프를 figure에서 지우는 역할을 해요.
줄13에서는 i번째 좌표, 즉, i번째 x좌표 coord[0, i]와 y좌표 coord[1, i],를 마커를 이용하여 보여주지요.
줄14에서는 첫 번째부터 i번째까지의 x좌표 coord[0, 0:i+1]와 y좌표 coord[1, 0:i+1]들을 선으로 그리는 코드이죠. i번째 까지라면서 마지막 인덱스를 i가 아닌 하나 더 큰 i+1으로 해서 이상하지요? 하지만, 일종의 약속이고 문법이니 잊지 마시고 실수하지 마세요.
줄16과 줄17에서는 축들의 범위를 설정했구요, 줄18에서는 0.5초간 for 루프 내에서의 동작을 멈추게 하는 코드를 추가했어요. 이전에도 설명했듯이, 이렇게 잠시 멈추는 이유는, 그렇지 않을 경우 for 루프의 동작이 너무 빨라서 로봇 위치가 변하는 것을 볼 수 없기 때문이지요.

자, 이제 코드 파일을 저장한 후, 아래처럼 터미널에서 python3 를 이용하여 실행해 보지요.

실행하면, 사각형 마커는 계속 움직이고, 움직였던 경로를 보여주는 선이 동시에 그려진답니다.

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: 소스 코드 다운로드
혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오르쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
Python 배움터
C/C++ 배움터
About
Contact
Privacy Policy
강의목록
질문하기
처음으로