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]]
ただし、[j1:-1:-1] は空のスライスを返すため、j0==0 の場合は [j1:j0-1:-1] は機能しません...
EDIT 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]]
回答してくれたすべての人に感謝します。より良い方法を見つけた場合は、遠慮なく投稿してください。