요즘 약간 신나게 일하는 기간은 아닌 모양입니다. 경기는 너무 나쁘고... 덩달아 월급쟁이인 저도 힘들고..ㅠㅠ. 뭐 그래서 약간 바쁜척 하느라 또 이러저리 시간이 지나가네요.ㅠㅠ. 꿈같은 괌을 다녀오고 [바로가기] 아직 괌 앓이 중이랍니다.^^
최근에 저는 Python을 공부한다고... (사실 최근이 아니라 아주 예전에.ㅠㅠ) 했었는데요... 요근래 IPython을 설치하는 법을 이야기했었죠.[바로가기] 이제 그 환경에서 numpy라는 아이에 대해 이야기를 할려고 합니다. numpy의 기초나 역사 그 어마어마한 기능까지 뭐 제가 다~~~ 이야기하기에는 전 너~~~무 초보이기때문에.. 그냥 언제나 그렇듯 제가 공부하거나 신기해했던 것을 이야기할까 합니다. 사실 이 내용은 GitHub에 있는 Python Numpy 기초 강좌 예제를 그냥 따라했던 것 뿐이랍니다.^^.
어디 어디 강좌 예제 등등을 다운받아 들여다 봐도 항상 numpy의 namespace는 np로 많이들 쓰는듯 하더군요.^^
먼저 numpy가 제공하는 기초 함수들 중 MATLAB에서도 제가 많이 봤던 아이들이 있더군요. 1로 채워진 정해진 크기의 행렬(배열)을 만드는 ones와 0으로 채워지는 zeros와 단위행렬을 만들어주는 eye가 있더군요^^ 살짝 방갑기도 하고^^
그리고, np.array를 이용해서 직접 행렬(배열)을 만들어 둘 수 있습니다. 그 크기를 알고 싶으면 shape을 데이터 형을 알고 싶으면 dtype을 이용하면 되구요.
그리고 데이터형을 변경하고 싶으면 astype을 사용하면 되구요. 또 배열을 선언할때 dtype 속성으로 데이터형을 지정할 수도 있습니다.
물론 일반 연산자를 사용해서 배열간 연산이 가능한데요. 곱하기(*) 기호는 각 요소별 곱을 수행하구요. (행렬의 곱이 아닙니다.) + 덧셈 기호로 스칼라 값을 더해도 각 요소에 모두 더합니다. 나눗셈도 마찬가지구요^^
그리고 ** 곱하기 기호를 두 번 연달아 적으면 제곱승이 됩니다. 위 16번 줄의 명령은 data1의 각 요소에 루트를 씌우라는 말입니다. 17번 명령은 **2는 ^2와 같은 결과구요. 모두다 각 요소를 각각 연산합니다.
또한 등간격의 숫자 배열을 지정할 수 있는 arange()명령이 있구요. 이에 따라 각 위치별로 잘라서 보거나 저장할 수 있습니다. 특이한 것은 22번 명령인데요. numpy 배열로 선언된 변수의 특정 구간을 다른 이름으로 저장해서 그 변수의 내용을 수정하면 원본도 같이 수정되더군요. 흠... 편한듯 하면서도 다른 언어 사용자들은 조심하셔야할 듯 합니다.^^
이렇게 가로 세로 위치를 이용해서 데이터 내용을 확인할 수 있구요. 또 MATLAB 유저라면 이해가 편하실텐데.. (:) 연산자를 사용해서 범위를 지정할 수도 있습니다.
특히 위 내용처럼 [:2, 1:]의 의미는 처음부터 2번행 직전까지의 행과, 1번 열 부터 끝 열까지라는 의미입니다. 정확하게는 29번 명령을 보시면 됩니다.
또 어설픈.. 기초이야기를 시작하네요. ㅎㅎ. 많은 분들은 아니지만... 이런 저런 분들이 오시는 블로그에 이렇게 공부하는 내용을 올리다니.. 저도 참 황당한 일입니다.^^. 그런데 희한하게 이렇게 올리고 나면 이 지식이 이제사 비로서 내 지식이 된듯한 착각(^^)이 있습니다.ㅠㅠ. 뭐 아무튼 그렇다구요^^
'Software > Python' 카테고리의 다른 글
Python numpy 기초 - 배열의 조건 연산 및 수학 통계 관련 기초 연산 (8) | 2015.04.02 |
---|---|
Python numpy 기초 - meshgrid의 사용과 matplotlib를 inline으로 선언해서 사용하기 (10) | 2015.03.27 |
Python numpy 기초 - 기본적인 색인 연산 (14) | 2015.03.25 |
Python에서 XML 다루기 (몹시 초보용) (18) | 2015.03.05 |
Win8에서 IPython Notebook 사용하기 (20) | 2015.02.27 |
Python에서 수행해 본 간단한 FFT 코드 (38) | 2015.02.09 |
간단한 예제를 통해 본 Python Class (18) | 2015.02.06 |