Как сдвинуть элементы в массиве 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.