2013년 7월 8일 월요일

numpy array [::] 사용법

numpy 에서 array를 다루는 것은 for문을 생각하면 쉽습니다. A[start:end:step] 이런식으로 표현이 됩니다. 아래는 2차 matrix에 대해서, 원하는 데이터만 뽑아 올때 아래와 같이 합니다.

import numpy as np

k =  [[11,24,53,12,22,11],
[14,38,43,22,32,31],
[18,21,63,18,22,41],
[12,23,56,12,24,41],
[14,22,57,12,21,31],]

a = np.array(k)

print a[:]
[[11 24 53 12 22 11]
 [14 38 43 22 32 31]
 [18 21 63 18 22 41]
 [12 23 56 12 24 41]
 [14 22 57 12 21 31]]


print [::2]

[[11 24 53 12 22 11]
 [18 21 63 18 22 41]
 [14 22 57 12 21 31]]

print [:3:]
[[11 24 53 12 22 11]
 [14 38 43 22 32 31]
 [18 21 63 18 22 41]]
 
print [2:5:2]
[[18 21 63 18 22 41]
 [14 22 57 12 21 31]]
            
여기서 부터는 2차원으로 확장해 봅니다.


print [::2]
[[11 24 53 12 22 11]
 [18 21 63 18 22 41]
 [14 22 57 12 21 31]]
행(row)만 뽑아옵니다. 

print [:,::2]
[[11 53 22]
 [14 43 32]
 [18 63 22]
 [12 56 24]
 [14 57 21]]
열(column)만 뽑아봅니다. 


print [::2,1:3:]

[[24 53]
 [21 63]
 [22 57]]  

열과 행을 동시에 적용시킵니다. 

위와 같은 방법으로 간단히 for 문으로 하는 방법들을 제어할수 있습니다. 물론 이것은 numpy로 하는 방법입니다. 일반 python에서는 안먹습니다. numpy는 기존 matlab을 구현한 것이기에 matlab과 문법이 상당히 유사합니다. 그래서 numpy를 익히실때는 matlab책을 놓고 같이 보시면 상당히 유용할때가 많습니다.

댓글 없음:

댓글 쓰기