Я ищу способ получить контур подматрицы Matlab/numpy. Например, если у меня есть:matlab/numpy submatrix contour
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] быстрее (т.е. более читаемым), чем нарезка каждого края, а затем конкатенировать их?
EDIT: Проблема в том, что нарезка с numpy является назойливой. Например, скажем, у меня есть i0, i1, j0, j1 определить подматрицу:
Я хотел сделать: np._r [A [i0, j0: j1 +-], A [i0: i1 + 1, j1], A [i1, j1: j0-1: -1], A [i1: i0-1: -1, j0]]
Но [j1: j0-1: -1] не работает, если j0 == 0, так как [j1: -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]]
По-прежнему спасибо всем, кто ответил, если вы нашли лучший способ, не стесняйтесь публиковать сообщения.
Мне все равно нужно создавать строки и столбцы для любых значений i0, j0, i1, j1. – Nihl