1
我有一个正方形阵列的子阵列x
,形状(N, N)
,我想检索这是在主对角线的x
居中形状的方形子阵列。例如,N = 3
& n = 2
,并使用numpy的as_strided检索中心的主对角线
x = np.arange(9).reshape((3, 3))
应该产生
array([[[0, 1],
[3, 4]],
[[4, 5],
[7, 8]]])
一种方法是使用make_windows
def make_windows(a, sub_w, sub_h):
w, h = a.shape
a_strided = np.lib.stride_tricks.as_strided(
a, shape=[w - sub_w + 1, h - sub_h + 1,
sub_w, sub_h],
strides=a.strides + a.strides)
return a_strided
,并完成类似np.einsum('ii...->i...', make_windows(x, 2, 2))
,但它会整齐地做到一步。单独使用as_strided
可以吗?