Функция roll
Функция roll выполняет циклический сдвиг элементов массива
на заданное количество позиций. Первым параметром функция принимает
массив, вторым - количество позиций для сдвига (положительное значение
сдвигает элементы вправо, отрицательное - влево). Третьим параметром
можно указать ось, вдоль которой выполняется сдвиг.
Синтаксис
np.roll(arr, shift, [axis])
Пример с одномерным массивом
Давайте выполним циклический сдвиг элементов одномерного массива на две позиции вправо:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.roll(arr, 2)
print(res)
Результат выполнения кода:
[4 5 1 2 3]
Пример с отрицательным сдвигом
Выполним циклический сдвиг элементов одномерного массива на две позиции влево:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = np.roll(arr, -2)
print(res)
Результат выполнения кода:
[3 4 5 1 2]
Пример с двумерным массивом
Выполним циклический сдвиг элементов двумерного массива по строкам (ось 0):
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.roll(arr, 1, axis=0)
print(res)
Результат выполнения кода:
[[7 8 9]
[1 2 3]
[4 5 6]]
Пример с двумерным массивом по столбцам
Выполним циклический сдвиг элементов двумерного массива по столбцам (ось 1):
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
res = np.roll(arr, 1, axis=1)
print(res)
Результат выполнения кода:
[[3 1 2]
[6 4 5]
[9 7 8]]
Пример с многомерным массивом
Выполним циклический сдвиг элементов трехмерного массива по различным осям:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
res = np.roll(arr, 1, axis=(0, 1))
print(res)
Результат выполнения кода:
[[[7 8]
[5 6]]
[[3 4]
[1 2]]]