假设我有一个大小为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
矩阵并用零填充“失败的索引”?
答案 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]])
>>>