Як перемістити елементи в масиві numpy (з прикладами)
Щоб зсунути елементи масиву NumPy, можна використати один із наведених нижче методів:
Спосіб 1: Зміщення елементів (збереження всіх початкових елементів)
#shift each element two positions to the right data_new = np. roll (data, 2)
Спосіб 2: Зсув елементів (дозволити заміну елементів)
#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 < 0:
result[num:] = fill_value
result[:num] = arr[-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)
Наступні приклади показують, як використовувати кожен метод на практиці.
Спосіб 1: Зміщення елементів (збереження всіх початкових елементів)
Наступний код показує, як використовувати функцію np.roll() для зміщення кожного елемента масиву NumPy на дві позиції вправо:
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])
Зауважте, що кожен елемент було зміщено на дві позиції вправо, а елементи в кінці масиву просто переміщено вперед.
Ми також можемо використовувати від’ємне число у функції np.roll() , щоб зсунути елементи вліво:
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])
Спосіб 2: Зсув елементів (дозволити заміну елементів)
Ми також можемо визначити спеціальну функцію для зсуву елементів масиву NumPy і дозволити замінити зміщені елементи на певне значення.
Наприклад, ми можемо визначити наступну функцію для зміщення елементів і заміни всіх зміщених елементів на значення 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 < 0:
result[num:] = fill_value
result[:num] = arr[-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])
Ми також можемо використовувати від’ємне число у функції, щоб зрушити елементи вліво:
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 < 0:
result[num:] = fill_value
result[:num] = arr[-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])
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові операції в NumPy:
Як підрахувати входження елементів у NumPy
Як сортувати масив NumPy за стовпцями
Як розрахувати режим масиву NumPy