HOWTO · NumPy
NumPy Sostituisci valori
Esistono tre metodi principali che possono essere utilizzati per sostituire i valori all'interno di un array NumPy in Python, la funzione numpy.clip(), la funzione numpy.minimum() e il metodo di indicizzazione.
In questa pagina
Per sostituire i valori in un array NumPy, usa numpy.clip() oppure combina numpy.minimum() e numpy.maximum() per limitare i valori tra due estremi. Per una condizione come «sostituire ogni valore maggiore di 5», usa l’indicizzazione booleana e l’assegnazione. I primi due approcci creano un array risultato e lasciano invariato l’input; l’assegnazione tramite indice modifica l’array originale.
Sostituire i valori in NumPy con la funzione numpy.clip()
Usa numpy.clip() quando vuoi mantenere ogni valore entro un limite inferiore e uno superiore. I valori inferiori al limite minimo vengono portati a quel limite, mentre quelli superiori al limite massimo vengono portati al limite massimo. Se non specifichi l’argomento out, la funzione restituisce un array con i valori limitati e lascia invariato l’array di input. Ecco un esempio:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import numpy as np
array = np.array([1, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 9])
result = np.clip(array, 0, 5)
print(result)
Risultato:
[1 2 3 4 5 5 5 5 5 5 5 5]
In questo caso, 0 è il limite inferiore e 5 quello superiore. I valori già compresi tra questi limiti restano invariati, mentre quelli maggiori vengono limitati a 5. Assegnando il valore restituito a result, l’array originale array resta disponibile per i calcoli successivi.
Sostituire i valori in NumPy con le funzioni numpy.minimum() e numpy.maximum()
Puoi applicare gli stessi due limiti con numpy.minimum() e numpy.maximum(). Per prima cosa, numpy.minimum() imposta il limite superiore scegliendo il valore minore tra ciascun elemento dell’array e 5. Poi numpy.maximum() imposta il limite inferiore scegliendo il valore maggiore tra ciascun valore intermedio e 0. Entrambe le operazioni restituiscono array, quindi anche questa sequenza lascia invariato array.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import numpy as np
array = np.array([1, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 9])
result1 = np.minimum(array, 5)
result2 = np.maximum(result1, 0)
print(result2)
Risultato:
[1 2 3 4 5 5 5 5 5 5 5 5]
L’ordine è importante quando applichi entrambi i limiti: prima riduci i valori troppo alti al limite superiore, poi aumenti quelli inferiori al limite minimo. Sostituisci 5 e 0 con i limiti superiore e inferiore che ti servono. Se ti serve un solo limite, usa la funzione corrispondente da sola: numpy.minimum() per un limite superiore oppure numpy.maximum() per un limite inferiore.
Sostituire i valori in NumPy con l’indicizzazione dell’array in Python
Per sostituire i valori in base a una condizione, seleziona gli elementi corrispondenti con una maschera booleana e assegna il nuovo valore tramite quella selezione. È utile quando la regola non consiste semplicemente in due limiti, per esempio per modificare i valori sopra una soglia. L’assegnazione agisce sull’array originale, quindi creane una copia prima se vuoi conservarlo invariato.
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
import numpy as np
array = np.array([1, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9, 9])
array[array > 5] = 5
print(array)
Risultato:
[1 2 3 4 5 5 5 5 5 5 5 5]
L’espressione array > 5 crea una maschera booleana, vera per ogni valore maggiore di 5. L’indicizzazione con quella maschera seleziona tali elementi e l’assegnazione di 5 li sostituisce direttamente nell’array. Per sostituire i valori inferiori a una soglia, cambia il confronto in <; per selezionare un intervallo o applicare un’altra condizione, combina confronti booleani con & oppure | e racchiudi ciascun confronto tra parentesi.