matlab/numpy子矩阵轮廓

matlab/numpy子矩阵轮廓,matlab,numpy,submatrix,Matlab,Numpy,Submatrix,我正在寻找一种获得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来标识子矩阵: 我想做: n

我正在寻找一种获得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.[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]]

还是要感谢所有回答的人,如果你找到了更好的方法,请毫不犹豫地发布。

我认为这是一个很好的解决方案:

contour = [A(3,2:5) A(4,5) A(5,5:-1:2) A(4,2)];
这里轮廓的值将是你的数组[1,2,3,4,5,6,7,8,9,a]

rows = [2,2,2,2,3,4,4,4,4,3]
cols = [1,2,3,4,4,4,3,2,1,1]
A[rows, cols]

在您的情况下,应该返回
[1,2,3,4,5,6,7,8,9,a]

我仍然需要为任何i0、j0、i1、j1可能值生成行和列。