2016-11-03 2 views
1

크기 (5,5)의 2d numpy 배열이 있다고 가정 해 봅시다. 나는 다음과 같은 문으로 인덱스 (i, j)의 이웃을 얻을 수 있습니다 : 0 < i,j < 4 위대한 작품Numpy는 이웃을 항상 3x3 행렬로 얻습니다.

a = range(25) 
a = np.reshape(a, (5,5)) 

n = a[i-1:i+2, j-1:j+2] 

합니다. 내 문제는 내가 항상 3x3 배열을 취득하려는하지만 지표 중 하나 인 경우 0 또는 4 나는 그것을 얻지 않는다

당신이 어떤이 있습니까 (경우 i=0의 범위는 (-1, 2) = (4, 2)이며, 우리는 빈 범위를 얻을) 어떻게 항상 3x3 매트릭스를 얻을 수 있고 "실패한 인덱스"를 0으로 채울 수 있습니까?

답변

3

np.pad을 사용하여 배열을 먼저 확장하고 결과에 색인을 붙이십시오. 그에 따라 색인을 이동해야합니다.

>>> b = np.pad(a, pad_width=1, mode='constant') 
>>> b 
array([[ 0, 0, 0, 0, 0, 0, 0], 
     [ 0, 0, 1, 2, 3, 4, 0], 
     [ 0, 5, 6, 7, 8, 9, 0], 
     [ 0, 10, 11, 12, 13, 14, 0], 
     [ 0, 15, 16, 17, 18, 19, 0], 
     [ 0, 20, 21, 22, 23, 24, 0], 
     [ 0, 0, 0, 0, 0, 0, 0]]) 
>>> 
관련 문제