Numpy roll() 函数
Numpy roll() 函数用于沿指定轴移动数组元素。超出最后一个位置的元素将被重新引入到第一个位置。此函数对于循环移动元素特别有用,例如将数组的最后一个元素移到最前面,或以循环方式移动元素。
该函数的工作原理是沿指定轴滚动元素,超出数组边界的值将被卷绕到另一侧,并且轴可以指定正值或负值。它可以应用于任意维度的数组。
语法
以下是 Numpy roll() 函数的语法 -
numpy.roll(m, shift, axis=None)
参数
以下是 Numpy roll() 函数的参数 -
- m:需要移动元素的输入数组。
- shift:数组元素需要移动的位置数。正值表示元素向右移动,负值表示元素向左移动。
- axis(可选):数组沿其移动的轴。如果未指定,则数组在移动前会被展平,然后重新变形回其原始形状。
返回类型
此函数返回输入数组的视图,其元素沿指定轴移动。原始数组保持不变。
示例
以下是使用 Numpy roll() 函数移动一维数组元素的基本示例 -
import numpy as np my_array = np.array([10, 20, 30, 40, 50]) print("原始数组:", my_array) result = np.roll(my_array, 2) print("右移两位后的数组:", result)
输出
以下是上述代码的输出 -
原始数组:[10 20 30 40 50] 右移两位后的数组:[40 50 10 20 30]
示例:沿特定轴移动
roll() 函数也可以在多维数组中沿特定轴移动元素。在以下示例中,我们将二维数组的元素沿轴 0(行)移动 1 位 -
import numpy as np my_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("原始数组: ", my_array) result = np.roll(my_array, 1, axis=0) print("将行移动 1 位后的数组: ", result)
输出
以下是上述代码的输出 -
原始数组: [[1 2 3] [4 5 6] [7 8 9]] 将行移动 1 位后的数组: [[7 8 9] [1 2 3] [4 5 6]]
示例:负向移位
我们还可以通过对 shift 参数使用负值来将元素向相反方向移位。这里,我们将二维数组的元素沿轴 1(列)平移了 -1 位 -
import numpy as np my_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print("原始数组: ", my_array) result = np.roll(my_array, -1, axis=1) print("将列平移 -1 位后的数组: ", result)
输出
以下是上述代码的输出 -
原始数组: [[1 2 3] [4 5 6] [7 8 9]] 将列移动 -1 位后的数组: [[2 3 1] [5 6 4] [8 9 7]]
示例:平移三维数组
roll() 函数也可应用于多维数组。这里,我们将三维数组的元素沿轴 2(深度)平移 1 位 -
import numpy as np my_array = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print("原始数组: ", my_array) result = np.roll(my_array, 1, axis=2) print("沿深度轴平移后的三维数组: ", result)
输出
以下是上述代码的输出 -
原始数组: [[[1 2] [3 4]] [[5 6] [7 8]]] 沿深度轴平移后的三维数组: [[[2 1] [4 3]] [[6 5] [8 7]]]
示例:未指定轴的一维数组
如果未指定轴,则数组将被展平,并在展平后的数组上执行平移。在以下示例中,我们将一个一维数组向右平移 2 位 -
import numpy as np my_array = np.array([10, 20, 30, 40, 50]) print("原始数组:", my_array) result = np.roll(my_array, 2) print("右移 2 位后的数组:", result)
输出
以下是上述代码的输出 -
原始数组:[10 20 30 40 50] 右移 2 位后的数组:[40 50 10 20 30]