numpy.roll(a, shift, axis=None)
函数解释:沿着给定轴滚动数组元素。超出最后位置的元素将会滚动到第一个位置。
参数:
a : (array_like)
输入数组
shift : (int or tuple of ints)
滚动的长度。如果是提供元组的话,下面的轴参数的维度也应该跟shift维度一样。
axis : (int or tuple of ints, optional)
滚动的维度,0为垂直滚动,1为水平滚动(默认情况下,即参数为None时,数组在移位之前会被变成扁平化,之后会恢复原始形状。)
返回值:res : 输出数组(维度和a一样)
例子
import numpy as np
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
a=np.arange(10)
a
np.roll(a,2) # axis为None,则会先进行扁平化,然后再向水平滚动2个位置
b=np.reshape(a, (2,5)) #将a变成两行五列
b
np.roll(b,2) # axis为None,则会先进行扁平化,然后再向水平滚动2个位置
np.roll(b,1,axis=0)# 5列同时向垂直方向滚动1个位置
np.roll(b,1,axis=1)# 2行同时向水平方向滚动1个位置
输出:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
array([[8, 9, 0, 1, 2],
[3, 4, 5, 6, 7]])
array([[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4]])
array([[4, 0, 1, 2, 3],
[9, 5, 6, 7, 8]])