我正在寻找一种方法来获取 matlab/numpy 子矩阵的轮廓。例如,如果我有:
A=
[x,x,x,x,x,x,x]
[x,x,x,x,x,x,x]
[x,1,2,3,4,x,x]
[x,5,x,x,6,x,x]
[x,7,8,9,10,x,x]
[x,x,x,x,x,x,x]
有没有办法让 [1,2,3,4,6,10,9,8,7,5] 比切片每条边然后连接它们更快(即更具可读性)?
编辑:问题是用 numpy 切片很麻烦。例如,假设我有 i0,i1,j0,j1 来识别子矩阵:
我想做: np._r[A[i0,j0:j1+1],A[i0:i1+1,j1],A[i1,j1:j0-1:-1],A[i1:i0 -1:-1,j0]]
但是如果 j0==0,[j1:j0-1:-1] 不起作用,因为 [j1:-1:-1] 返回一个空切片...
编辑 2:以下切片似乎有效,我不确定它是否真的很好,但我还没有做得更好。
np._r[A[i0,j0:j1+1],A[i0+1:i1+1,j1],(A[i1,j0+1:j1+1])[::-1],(A[i0+1:i1+1,j0])[::-1]]
仍然感谢所有回答的人,如果您找到了更好的方法,请不要犹豫发布。