Предположим, у меня есть массив A
:
A = np.arange(25).reshape((5,5))
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
Я хочу преобразовать его в эту матрицу B
:
array([[24, 20, 21, 22, 23, 24, 20],
[ 4, 0, 1, 2, 3, 4, 0],
[ 9, 5, 6, 7, 8, 9, 5],
[14, 10, 11, 12, 13, 14, 10],
[19, 15, 16, 17, 18, 19, 15],
[24, 20, 21, 22, 23, 24, 20],
[ 4, 0, 1, 2, 3, 4, 0]])
Идея в том, что если вы перейдете отисходный край A
, вы встретите противоположную сторону.то есть строка над верхом будет нижней, левый столбец исходного первого столбца будет последним столбцом, левый верхний будет правым нижним, и т. д.
В настоящее время я делаю это с помощью:
B = np.concatenate(([A[-1]], A, [A[0]]), axis=0).T
B = np.concatenate(([B[-1]], B, [B[0]]), axis=0).T
Что делает работу, выглядит просто и относительно просто, мой вопрос: есть ли встроенный метод или другие хитрые способы, которые не требуют от меня ручного захвата краев и их установки?Я не знаю, np.pad
может ли это сделать, но я мог что-то упустить.