Numpy总是将邻居作为3x3矩阵

时间:2016-11-03 22:41:19

标签: python arrays numpy

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

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

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

这对0 < i,j < 4非常有用。我的问题是我总是希望得到一个3x3数组,但如果其中一个索引是0或4,我就得不到它(如果i=0范围是(-1, 2) = (4, 2),我们得到空的范围)

您是否有任何想法如何始终获得3x3矩阵并用零填充“失败的索引”?

1 个答案:

答案 0 :(得分:4)

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