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