Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
切片数组,但Python中的间隔重叠_Python_Arrays_Python 3.x_Slice - Fatal编程技术网

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

切片数组,但Python中的间隔重叠,python,arrays,python-3.x,slice,Python,Arrays,Python 3.x,Slice,我的数据中有3D阵列。我只想在Python中以重叠的间隔对3D数组进行2×2×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,

我的数据中有3D阵列。我只想在Python中以重叠的间隔对3D数组进行2×2×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]]]
像这样,(也许不完全是…)

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

您应该看看
numpy.ndarray.strips
numpy.lib.stride\u技巧

遍历数组时在每个维度中步进的字节元组。 数组
a
中元素
(i[0],i[1],…,i[n])
的字节偏移量为:

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

下面是一个使用步幅的二维示例:


也可以在Stackoverflow上看到这个例子,以增加您的理解。

a=[1,2,3,4;5,6,7,8]
是无效的Python语法。
offset = sum(np.array(i) * a.strides)
x = np.arange(20).reshape([4, 5])
>>> x
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

>>> from numpy.lib import stride_tricks
>>> stride_tricks.as_strided(x, shape=(3, 2, 5),
                                strides=(20, 20, 4))
...
array([[[  0,  1,  2,  3,  4],
        [  5,  6,  7,  8,  9]],

       [[  5,  6,  7,  8,  9],
        [ 10, 11, 12, 13, 14]],

       [[ 10, 11, 12, 13, 14],
        [ 15, 16, 17, 18, 19]]])