Python Numpy获取邻居始终为3x3矩阵

Python Numpy获取邻居始终为3x3矩阵,python,arrays,numpy,Python,Arrays,Numpy,假设我有一个大小为(5,5)的2d numpy数组。我可以通过以下语句获得索引(I,j)的邻居: a = range(25) a = np.reshape(a, (5,5)) n = a[i-1:i+2, j-1:j+2] 这对0

假设我有一个大小为(5,5)的2d numpy数组。我可以通过以下语句获得索引(I,j)的邻居:

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

n = a[i-1:i+2, j-1:j+2]
这对
0
非常有效。我的问题是,我总是想得到一个
3x3
数组,但如果其中一个索引是0或4,我就得不到它(如果
I=0
,则范围是
(-1,2)=(4,2)
,我们得到的是一个空范围)


你知道我如何总是得到一个
3x3
矩阵并用零填充“失败的索引”吗?

使用
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]])
>>>