파이썬 라이브러리 중 유명한 대표적 라이브러리를 들면 numpy 와 matplotlib 가 있다. numpy 는 수치계산에 관련된 것을 편리하게 하도록 지원해 주는 것이고 matplotlib 는 matlab 의 plot 과 그 이외의 여러 plotting 함수들을 파이썬에서 흉내낸 것이다.
이 글은 informal 하게 작성해 보자. 왜냐 하면, ㅋ, 이 내용은 지극히 개인적인 얘기일 수 있으니까.
파이썬은 그 자체로도 배우기 쉽고 써먹기 좋은 언어이며, 바로 그렇기 때문에 사용자층이 두텁고, 그것이 곧 많은 라이브러리의 탄생을 불러 일으킬 수 있었기 때문에 좋은 라이브러리가 많고, 또 설계 및 성능도 꽤나 괜찮다. 논문들에서도 numpy 같은 것을 써서 작업했다고 말할 수 있을 정도이니까. numpy 는 힘든 연산은 내부적으로 C로 구현되어 있다고 하며, 굳이 boost 의 python 관련 라이브러리가 아니더라도 C에서 numpy 의 루틴들을 부를 수 있는 API 를 제공해 주고 있다. numpy 에는 array type 이 정의되어 있고, indexing 을 matlab 처럼 편리하게 할 수 있도록 지원해 준다. list <-> array 의 변환 등이 매우 편리하게 되어 있고, scipy 를 이용하면 많은 통계관련 작업, 최적화 작업 등을 편리하게 할 수 있다. 물론 이 두 라이브러리에서 제공해 주는 것들을 C나 C++ 역시 찾을 수 있겠지만, 그것을 '이용'하는 점에 있어서 파이썬의 편리함을 따라갈 수 없음은 두말 할 나위가 없다.
matplotlib 는, 우선 갤러리의 그림들을 보자. 저 많은 그림들 중 자신이 만들고자 하는 그림과 비슷한 것을 찾아서 클릭을 하면 그 코드가 나와 있다. 그것을 적당히 변경해서 자신의 데이터를 비슷한 모습으로 그릴 수 있게 된다. 아..., matlab 이 편하기는 한데 툭하면 메모리 부족하다고 투정을 부려대쌓기 때문에 짜증이 나는데, 거의 비슷한 interface 를 갖고 파이썬 그 자체의 편리함으로 무장된 matplotlib 는 matlab으로 plotting 하는 것에 대한 거의 완벽한 대안이 될 수 있다. 나는 예전에는 주로 C++ 로 직접 그려 논문에 넣었었는데 요즘에는 논문에 넣을 그림도 거의 전부 matplotlib 으로 그리고 있다. 데이터가 얼마가 되든 일단 파이썬으로 처리할 수 있기만 하면 matplotlib 로 던질 수 있기 때문에 matlab 에서 만나던 메모리 부족 문제는 넘어 간다. 게다가, C++ 로 할 때의 그 수많은 계산들, 가령 최대/최소 계산하고 글자가 몇 pixel 인지 계산해서 어느 좌표에 찍어야 (TextOut) 가운데 정렬로 찍히는지 등등을 하지 않아도 되기 때문에 참말로 편하다.
파이썬은 정말로 '편리'한 언어! 오늘 파이썬으로 데이터 만들면서 또 느꼈다는.
하지만 역시 나에겐 속도가 문제가 되곤 하지. 나랑 비슷하게 데이터를 처리한 논문이 얼마 전에 발표 되었는데, ㅋㅋ, 거기서는 계산상의 문제 때문에 4,000 개만 처리했다고 했는데, 나는 15,000 개가 넘는 것을 전부 다 했지. 근데 그 계산이 O(N2) 이기 때문에 단순히 4배가 아니라 16배. 코드 레벨에서 최적화 하고 포인터로 떡칠을 해서 C++로 코딩하니 그래도 참아줄만한 시간에 계산이 끝났었다. 그래서 나는 많은 일들에 있어서 실제 데이터는 C++ 로 처리하고, 그 결과를 그림으로 그릴 때 위처럼 파이썬을 사용하곤 한다. 1
- Coexpression Network Analysis Identifies Transcriptional Modules Related to Proastrocytic Differentiation and Sprouty Signaling in Glioma, Cancer Res 2010 70; 10060 [본문으로]
'컴퓨터 > 자질구레 팁' 카테고리의 다른 글
Makefile 파일을 자동으로 만들기 (0) | 2011.01.19 |
---|---|
탐색기에서 python 파일로 drag & drop 사용 (0) | 2011.01.10 |
도스창 크기 등을 조절하기 (0) | 2010.12.15 |
윈도우즈에서 vim 의 backup 파일 생성하지 않게 하기 (0) | 2010.12.14 |
matlab의 ode45 : 미분방정식의 해를 구하는 함수 (3) | 2010.10.23 |