You can use one of the following methods to shift the elements in a NumPy array:
Method 1: Shift Elements (Keep All Original Elements)
#shift each element two positions to the right data_new = np.roll(data, 2)
Method 2: Shift Elements (Allow Elements to Be Replaced)
#define shifting function def shift_elements(arr, num, fill_value): result = np.empty_like(arr) if num > 0: result[:num] = fill_value result[num:] = arr[:-num] elif num else: result[:] = arr return result #shift each element two positions to the right (replace shifted elements with zero) data_new = shift_elements(data, 2, 0)
The following examples show how to use each method in practice.
Method 1: Shift Elements (Keep All Original Elements)
The following code shows how to use the np.roll() function to shift each element in a NumPy array two positions to the right:
import numpy as np #create NumPy array data = np.array([1, 2, 3, 4, 5, 6]) #shift each element two positions to the right data_new = np.roll(data, 2) #view new NumPy array data_new array([5, 6, 1, 2, 3, 4])
Notice that each element was shifted two positions to the right and elements at the end of the array simply got moved to the front.
We could also use a negative number in the np.roll() function to shift elements to the left:
import numpy as np #create NumPy array data = np.array([1, 2, 3, 4, 5, 6]) #shift each element three positions to the left data_new = np.roll(data, -3) #view new NumPy array data_new array([4, 5, 6, 1, 2, 3])
Method 2: Shift Elements (Allow Elements to Be Replaced)
We can also define a custom function to shift the elements in a NumPy array and allow elements that are shifted to be replaced by a certain value.
For example, we can define the following function to shift elements and replace any shifted elements with the value 0:
import numpy as np #create NumPy array data = np.array([1, 2, 3, 4, 5, 6]) #define custom function to shift elements def shift_elements(arr, num, fill_value): result = np.empty_like(arr) if num > 0: result[:num] = fill_value result[num:] = arr[:-num] elif num else: result[:] = arr return result #shift each element two positions to the right and replace shifted values with zero data_new = shift_elements(data, 2, 0) #view new NumPy array data_new array([0, 0, 1, 2, 3, 4])
We can also use a negative number in the function to shift the elements to the left:
import numpy as np #create NumPy array data = np.array([1, 2, 3, 4, 5, 6]) #define custom function to shift elements def shift_elements(arr, num, fill_value): result = np.empty_like(arr) if num > 0: result[:num] = fill_value result[num:] = arr[:-num] elif num else: result[:] = arr return result #shift each element three positions to the left and replace shifted values with 50 data_new = shift_elements(data, -3, 50) #view new NumPy array data_new array([ 4, 5, 6, 50, 50, 50])
Additional Resources
The following tutorials explain how to perform other common operations in NumPy:
How to Count Occurrences of Elements in NumPy
How to Sort a NumPy Array by Column
How to Calculate the Mode of NumPy Array