Python Numpy获取邻居始终为3x3矩阵
假设我有一个大小为(5,5)的2d numpy数组。我可以通过以下语句获得索引(I,j)的邻居: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
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]])
>>>