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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *