numpy.lib.stride_tricks.as_strided(x, shape=None, strides=None, subok=False, writeable=True)
参数:
- x: 我们要分割的数组
- shape: 返回结果的形状shape
- strides: 在数组X的基础上按照给的的strides来切割出给定的shape数组
返回: 返回在X的基础上按照给的的 strides来切割出一个给定shape的新数组
X = [
[0,1,2],
[3,4,5],
[6,7,8]
]
A = [
[
[[0,1],
[3,4]],
[[1,2],
[4,5]]
],
[
[[3,4],
[6,7]],
[[4,5],
[7,8]]
]
]
如上:将矩阵X转换为包含4个小矩阵的A,矩阵X的shape为(3,3), 矩阵A的shape为(2,2,2,2)
A = as_strided(X, shape=(2,2,2,2), strides)
这时候设置的strides并不是结果A的strides(32,16,8,4), strides的理解是在矩阵X的基础上按照给的的strides,来切割出一个符合给定shape的新数组。
计算strides:
- 第3维度:A[i, j, k, x]到A[i, j, k, x+1]在X中跨过4byte
例如