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
可以嗎?