【问题标题】:Need to grab a 3x3 neighbourhood of an input cell from a 2d numpy array需要从 2d numpy 数组中获取输入单元的 3x3 邻域
【发布时间】:2015-09-05 23:47:27
【问题描述】:

我正在尝试定义一个函数,该函数将返回输入单元格的 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 ]

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

当您说in_forest[in_row-1:in_row+1, in_col-1:in_col+2] 时,您是在说“给我一个从in_row-1in_row+1 独家,以及从in_col-1in_col+2 的正方形独家。它最多切片,但包括第二个索引。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多