2017-01-04 2 views
1

나는 특정 지역에 기후 데이터를 저장하는 numpy 배열을 가지고 일하고있다.파이썬 : numpy 배열의 외부 프레임 잘라 내기

data.shape[0]=365, data.shape[1]=466 #y,x 

하는의 내가, 예를 들어, data의 외부 프레임을 절단하여 새 배열을 만들려고한다고 가정 해 봅시다 : 배열은 다음과 같은 크기를 가지고 외부 프레임의 값은 width=5입니다. 새로운 배열은 다음과 크기가 같습니다

new.shape[0]=355, new.shape[1]=456 #y,x 

나의 현재 배열 형태입니다 :이 파이썬에서

array([[ 0.  , 0.  , 0.  , ..., 0.  , 
      0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , ..., 0.  , 
      0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , ..., 0.  , 
      0.  , 0.  ], 
     ..., 
     [ 17.00830078, 0.  , 0.  , ..., 28.21435547, 
     28.28242111, 28.33056641], 
     [ 0.  , 0.  , 0.  , ..., 28.25419998, 
     28.32392502, 28.34052658], 
     [ 0.  , 0.  , 0.  , ..., 28.23759842, 
     28.31396484, 28.36874962]], dtype=float32) 

구현 될 수 있는가?

+0

그냥'데이터 [5 수행 할 수 없습니다 data.shape [0] -5, 5 : data.shape [1 ] -5]'? – EdChum

답변

3

그냥 slice -

c = 5 # No. of elems to be cropped on either sides 
cropped_out = a[c:-c,c:-c] 

샘플 실행 -

In [212]: a 
Out[212]: 
array([[2, 8, 4, 1, 4, 2, 0, 1, 6, 1], 
     [4, 0, 2, 8, 0, 4, 4, 2, 6, 5], 
     [5, 7, 6, 6, 6, 4, 6, 4, 1, 7], 
     [6, 8, 2, 4, 3, 0, 3, 0, 2, 2], 
     [6, 2, 5, 1, 1, 3, 7, 3, 3, 5], 
     [4, 8, 4, 5, 6, 8, 6, 1, 0, 7], 
     [7, 2, 8, 8, 6, 7, 3, 1, 7, 2]]) 

In [213]: c = 2 # No. of elems to be cropped on either sides 

In [214]: a[c:-c,c:-c] 
Out[214]: 
array([[6, 6, 6, 4, 6, 4], 
     [2, 4, 3, 0, 3, 0], 
     [5, 1, 1, 3, 7, 3]]) 
+1

실제로 이것은 위의 내 코멘트보다 훨씬 낫습니다. 부정적인 색인도 잊어 버렸습니다. +1 – EdChum