如何在numpy中进行循环移位

LWZ*_*LWZ 15 python arrays numpy shift

例如,我有一个numpy数组

a = np.arange(10)
Run Code Online (Sandbox Code Playgroud)

如何将第一个n元素移动到数组的末尾?

我找到了这个roll函数,但似乎只是反过来,它将最后的n元素移到了开头.

mgi*_*son 40

为什么不用roll负数呢?

>>> import numpy as np
>>> a = np.arange(10)
>>> np.roll(a,2)
array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
>>> np.roll(a,-2)
array([2, 3, 4, 5, 6, 7, 8, 9, 0, 1])
Run Code Online (Sandbox Code Playgroud)


Fra*_*ano 8

你可以使用负移位

a = np.arange(10)
print(np.roll(a, 3))
print(np.roll(a, -3))
Run Code Online (Sandbox Code Playgroud)

回报

[7,8,9,0,1,2,3,4,5,6]
[3,4,5,6,7,8,9,0,1,2]