Come spostare gli elementi in un array numpy (con esempi)
È possibile utilizzare uno dei seguenti metodi per compensare gli elementi di un array NumPy:
Metodo 1: sposta gli elementi (mantieni tutti gli elementi originali)
#shift each element two positions to the right data_new = np. roll (data, 2)
Metodo 2: Sposta elementi (consenti la sostituzione degli elementi)
#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)
Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.
Metodo 1: sposta gli elementi (mantieni tutti gli elementi originali)
Il codice seguente mostra come utilizzare la funzione np.roll() per spostare ciascun elemento di un array NumPy di due posizioni a destra:
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])
Nota che ogni elemento è stato spostato di due posizioni a destra e gli elementi alla fine dell’array sono stati semplicemente spostati in avanti.
Potremmo anche usare un numero negativo nella funzione np.roll() per spostare gli elementi a sinistra:
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])
Metodo 2: Sposta elementi (consenti la sostituzione degli elementi)
Possiamo anche definire una funzione personalizzata per spostare gli elementi di un array NumPy e consentire la sostituzione degli elementi spostati con un determinato valore.
Ad esempio, possiamo definire la seguente funzione per spostare gli elementi e sostituire tutti gli elementi spostati con il valore 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])
Possiamo anche usare un numero negativo nella funzione per spostare gli elementi a sinistra:
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])
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni in NumPy:
Come contare le occorrenze degli elementi in NumPy
Come ordinare un array NumPy per colonna
Come calcolare la modalità dell’array NumPy