切片数组,但在Python中间隔重叠

时间:2019-02-26 17:09:58

标签: python arrays python-3.x slice

我的数据中有3D阵列。我只想在Python中以重叠的间隔将3D数组2 x 2切片。

这里是2D的示例。

a = [1, 2, 3, 4;
     5, 6, 7, 8]

此外,这也是我将数组2切成2后的预期结果。

[1, 2;  [2, 3;  [3, 4;
 5, 6]   6, 7]   7, 8]

在3D模式下,

  [[[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]],

   [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]],

   [[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]]]

例如,(也许不完全是)

 [1, 2   [2, 3
  4, 5]   5, 6]       ...
 [1, 2   [2, 3
  4, 5]   5, 6] 

我认为,通过使用np.split,我可以对数组进行切片,但不会重叠。请给我一些有用的提示。

1 个答案:

答案 0 :(得分:1)

  

您应该看看git clone <url>numpy.ndarray.strides

遍历数组时在每个维中步进的字节元组。 数组numpy.lib.stride_tricks中元素(i[0], i[1], ..., i[n])的字节偏移为:

a

另请参阅numpy documentation

  

下面是使用跨步的二维示例:

offset = sum(np.array(i) * a.strides)

也请参阅Stackoverflow上的此question(此示例来自该地方),以增进您的理解。