切片数组,但Python中的间隔重叠
我的数据中有3D阵列。我只想在Python中以重叠的间隔对3D数组进行2×2×2的切片 下面是2D的一个示例切片数组,但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,
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]]])