2015-06-19 12 views
3

我正在尝试定义一个函数,该函数将返回输入单元格的3x3邻域。现在我有:需要从2d numpy数组中获取输入单元格的3x3邻域

def queen_neighbourhood(in_forest, in_row, in_col): 

    neighbourhood = in_forest[in_row-1:in_row+1, in_col-1:in_col+1] 

    return neighbourhood 

(in_forest是输入数组)。

当我运行这个,它似乎只返回一个2x2矩阵,而不是一个3x3。为什么是这样?在我看来,我输入了一个行和列引用,然后切出一个正方形,它在输入行后面开始一行,并在其之前结束一行,然后对列进行相同操作。

因此,例如,给定的输入数组作为这样的:

[ 01, 02, 03, 04, 05 
    06, 07, 08, 09, 10 
    11, 12, 13, 14, 15 
    16, 17, 18, 19, 20 
    21, 22, 23, 24, 25 ] 

,然后用第2行,第3栏,我想返回一个矩阵,例如:

[ 02, 03, 04 
    07, 08, 09 
    12, 13, 14 ] 
+0

似乎与['在Matlab中执行Matlab的im2col'滑动'](http://stackoverflow.com/questions/30109068/implement-matlabs-im2col-sliding-in-python)。 – Divakar

回答

5

当你说in_forest[in_row-1:in_row+1, in_col-1:in_col+2]你是在说“给我一个从in_row-1包括in_row+1独家,从in_col-1包括in_col+2排他。它切片,但不包括包括第二个索引。

只需使用in_row-1:in_row+2in_col-1:in_col+2来代替切片,包括“+1”。

+0

谢谢,我忘了它是独家切片 – 1saac

相关问题