I have a numpy array, for example
a = np.arange(10)
how can I move the first n elements to the end of the array?
n
I found this roll function but it seems like it only does the opposite, which shifts the last n elements to the beginning.
roll
len(a)-n
Why not just roll with a negative number?
>>> 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])
you can use negative shift
a = np.arange(10) print(np.roll(a, 3)) print(np.roll(a, -3))
returns
[7, 8, 9, 0, 1, 2, 3, 4, 5, 6] [3, 4, 5, 6, 7, 8, 9, 0, 1, 2]
rollexactly what you want? Instead of moving the firstnelements to the end, move the lastlen(a)-nelements to the beginning? - Sajjan Singh