我有一个 numpy 数组,我想获得第 i 个点的“邻居”。通常我使用的数组是二维的,但下面的一维示例说明了我在寻找什么。如果
A = numpy.array([0,10,20,30,40,50,60,70,80,90])
那么元素 4 的(大小 5)邻域是[20,30,40,50,60]
,这可以很容易地通过做 来获得A[i-2:i+3]
。
但是,我还需要邻域“环绕”数组的边缘,以便元素 0[80,90,0,10,20]
的邻域为 ,元素 9 的邻域为[70,80,90,0,10]
。我似乎找不到一种优雅的方法来做到这一点,所以每次出现这种情况时,我最终都不得不使用一些复杂、烦人的逻辑(这对我来说很常见)。在二维情况下,一个点的邻域将是一个矩形阵列。
所以我的问题是,有没有一种巧妙的方法可以在 numpy 中表达这种“环绕邻域”操作?我更喜欢返回切片而不是副本的东西,但可读性和速度是最重要的考虑因素。