Циклический сдвиг в NumPy
Сдвинуть элементы массива по кругу позволяет функция
roll.
Она сдвигает элементы
вдоль оси на заданное число позиций.
Те, что выходят за край, появляются
с противоположной стороны. Без
указания оси сдвиг идёт по всему
массиву как по одному длинному ряду.
Создадим одномерный массив из четырёх чисел и сдвинем его на одну позицию. Выведем исходный ряд и результат:
import numpy as np
row = np.array([1, 2, 3, 4])
print(row) # выведет [1 2 3 4]
shifted = np.roll(row, 1)
print(shifted) # выведет [4 1 2 3]
У таблицы можно сдвигать столбцы, указав ось столбцов. Строки при этом не меняют порядок:
import numpy as np
table = np.array([[1, 2, 3], [4, 5, 6]])
shifted = np.roll(table, 1, axis=1)
print(shifted) # выведет [[3 1 2] [6 4 5]]
Создайте ряд [5, 6, 7, 8, 9].
Сдвиньте элементы на одну позицию
по кругу и выведите результат.
Создайте таблицу [[1, 2, 3], [4, 5, 6]].
Сдвиньте столбцы на одну позицию
по кругу и выведите результат.