在 Python 中移位或旋轉陣列

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 collections 模組移位陣列
  2. 在 Python 中使用 numpy.roll() 方法移位陣列
  3. 在 Python 中使用陣列切片移位陣列
在 Python 中移位或旋轉陣列

本文將解釋如何在 Python 中向左或向右移位或旋轉陣列。旋轉陣列意味著我們將陣列的每個值向左側或右側移位或移位 n 個位置。最右邊或最左邊的元素移位到陣列的另一端。

我們可以使用下面解釋的各種方法在 Python 中移位或旋轉陣列。

在 Python 中使用 collections 模組移位陣列

我們可以使用 collections 模組的 deque.rotate(n) 方法在 Python 中旋轉陣列。deque.rotate(n) 方法旋轉 deque 類物件 n 個位置,其中 n 的符號表示是向左還是向右旋轉 deque

如果 n 的值為正,則輸入將從左向右旋轉,如果 n 為負,則輸入將從右向左旋轉。下面的程式碼演示瞭如何在 Python 中使用 deque.rotate(n) 方法旋轉陣列。

from collections import deque

myarray = deque([1, 2, 3, 4, 5, 6])
myarray.rotate(2)  # rotate right
print(list(myarray))
myarray.rotate(-3)  # rotate left
print(list(myarray))

輸出:

[5, 6, 1, 2, 3, 4]
[2, 3, 4, 5, 6, 1]

在 Python 中使用 numpy.roll() 方法移位陣列

numpy.roll(array, shift, axis) 方法將 array 作為輸入並將其旋轉到等於 shift 值的位置。如果 array 是一個二維陣列,我們需要指定我們需要在哪個軸上應用旋轉;否則,numpy.roll() 方法將在兩個軸上應用旋轉。

就像 deque.rotate() 方法一樣,numpy.roll() 也會在值為正時從右向左旋轉陣列,如果值為負數則從右向左旋轉。下面的示例程式碼演示瞭如何使用 numpy.roll() 方法在 Python 中旋轉陣列。

import numpy as np

myarray = np.array([1, 2, 3, 4, 5, 6])
newarray = np.roll(myarray, 2)  # rotate right
print(newarray)
newarray = np.roll(myarray, -2)  # rotate left
print(newarray)

輸出:

[5 6 1 2 3 4]
[3 4 5 6 1 2]

在 Python 中使用陣列切片移位陣列

我們還可以使用 Python 中的陣列切片來實現旋轉功能。此方法不需要任何額外的庫,但效率低於上述方法。

下面的示例程式碼演示瞭如何在 Python 中使用陣列切片來旋轉或移位陣列。

def rotate(input, n):
    return input[n:] + input[:n]


myarray = [1, 3, 5, 7, 9]
print(rotate(myarray, 2))  # rotate left
print(rotate(myarray, -2))  # rotate right

輸出:

[5, 7, 9, 1, 3]
[7, 9, 1, 3, 5]

相關文章 - Python Array