Поверните массив значений вокруг правого нижнего угла в Python - PullRequest
0 голосов
/ 16 января 2019

Мне нужно повернуть массив значений на 90 градусов вокруг правого нижнего угла, то есть все значения на Ox, например, превратятся в oY. enter image description here Я знаю, что это может быть легко сделать, но я не смог пока сделать это ни с np.rot90(), ни с другими преобразованиями

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Ну, не имеет значения, вращаете ли вы массив вокруг правого нижнего угла, верхнего левого угла или любой другой точки: все это просто вращения . Единственный аспект, который имеет значение немного больше, - это направление, в котором вы хотите, чтобы массив вращался по часовой стрелке или против часовой стрелки, и, фактически, вы можете получить один, используя другой: поворот на 90 градусов по часовой стрелке - это то же самое, что поворот на 270 градусов. в противоположном направлении.

Если вы хотите повернуть массив на 90 градусов по часовой стрелке , используйте np.rot90, но скажите numpy, чтобы повернуть массив 3 раза и, если вы хотите , повернуть массив на 90 градусов. -clockwise использовать np.rot90, передавая 1 или ничего (кроме массива, конечно):

np.rot90(array)    # 90 deg CCW
np.rot90(array, 1) # 90 deg CCW
np.rot90(array, 3) # 90 deg CW

Пример

import numpy as np

array = np.arange(15).reshape((3, 5))

print(array)

print(np.rot90(array, 1))
print(np.rot90(array, 3))

Исходный массив

array([
    [ 0,  1,  2,  3,  4],
    [ 5,  6,  7,  8,  9],
    [10, 11, 12, 13, 14]
])

Поворот 1 раз (на 90 градусов против часовой стрелки)

array([
    [ 4,  9, 14],
    [ 3,  8, 13],
    [ 2,  7, 12],
    [ 1,  6, 11],
    [ 0,  5, 10]
])

Поворот 3 раза (на 90 градусов по часовой стрелке)

array([
    [10,  5,  0],
    [11,  6,  1],
    [12,  7,  2],
    [13,  8,  3],
    [14,  9,  4]
])
0 голосов
/ 16 января 2019

Использовать np.swapaxes ():

>>> x = np.array([[1,2,3]])
>>> np.swapaxes(x,0,1)
array([[1],
       [2],
       [3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...