2014-09-01 3 views
0

파이썬에서 2 차원 배열의 특정 '영역'을 선택하는 방법이 있습니까? 배열 슬라이스를 사용하여 하나의 행이나 열만을 투사 할 수 있지만 큰 2 차원 배열에서 '하위 배열'을 선택하는 방법은 확실하지 않습니다. 사전에 감사 잭파이썬의 2D 배열에서 '영역'을 선택하십시오.

+0

'array [row1 : row2, col1 : col2]'와 같은 것을 의미합니까? – darthbith

답변

5

당신이 numpy 라이브러리를 사용하는 경우, 당신과 같이이를 위해 numpy 년대에게 고급 슬라이스를 사용할 수 있습니다

import numpy as np 
x = np.array([[1, 2, 3, 4], 
       [5, 6, 7, 8], 
       [9, 10, 11, 12]]) 

print x[0:2, 2:4] 
#  ^^^ ^^^ 
#  rows cols 

# Result: 
[[3 4] 
[7 8]] 

합니다 (numpy docs에 대한 추가 정보를 원하시면)

numpy을 사용하지 않으려면 다음과 같이 목록 이해를 사용할 수 있습니다.

x = [[1, 2, 3, 4], 
    [5, 6, 7, 8], 
    [9, 10, 11, 12]] 

print [row[2:4] for row in x[0:2]] 
#   ^^^  ^^^ select only rows of index 0 or 1 
#   ^^^ and only columns of index 2 or 3 

# Result: 
[[3, 4], 
[7, 8]] 
관련 문제