Rimuovi elementi dall'array in NumPy
-
Rimuovi elementi usando la funzione
numpy.delete()
-
Rimuovi elementi usando la funzione
numpy.setdiff1d()
In questo articolo, impareremo due modi per rimuovere elementi da un array NumPy.
Rimuovi elementi usando la funzione numpy.delete()
Fare riferimento al codice seguente.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Produzione:
[ 1 2 3 5 7 9 10]
Nel codice sopra, usiamo la funzione delete()
della libreria NumPy
. La funzione delete()
accetta tre parametri, vale a dire, arr
, obj
e axis
e genera un array NumPy. Il arr
è l’array NumPy da cui vogliamo eliminare gli elementi. obj
è una lista di numeri interi. Questi numeri rappresentano gli indici degli elementi che dovrebbero essere cancellati dall’array. Infine, l’axis
è un argomento opzionale. axis
si riferisce all’asse lungo il quale devono essere eliminati gli elementi designati dall’oggetto obj
. Se a questo parametro viene assegnato un valore None
, arr
viene appiattito e la cancellazione viene eseguita su questo array appiattito.
Come al solito, se questo metodo fornisce un indice che si trova al di fuori dell’intervallo di arr
, genera un’eccezione IndexError
.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7, 34]
modifiedArray = np.delete(myArray, indexes)
print(modifiedArray)
Produzione:
Traceback (most recent call last):
File "<string>", line 5, in <module>
File "<__array_function__ internals>", line 5, in delete
File "/path/to/library/numpy/lib/function_base.py", line 4480, in delete
keep[obj,] = False
IndexError: index 34 is out of bounds for axis 0 with size 10
Per saperne di più su questa funzione, fare riferimento alla documentazione ufficiale di questa funzione qui
Ecco altri due esempi di eliminazione in un array NumPy multidimensionale.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], 1)
print(modifiedArray)
Produzione:
[[ 1 4 5]
[11 14 15]
[21 24 25]]
Usa None
come valore per il parametro axis
.
import numpy as np
myArray = np.array([[1, 2, 3, 4, 5], [11, 12, 13, 14, 15], [21, 22, 23, 24, 25]])
modifiedArray = np.delete(myArray, [1, 2], None)
print(modifiedArray)
Produzione:
[ 1 4 5 11 12 13 14 15 21 22 23 24 25]
Rimuovi elementi usando la funzione numpy.setdiff1d()
Questa volta useremo la funzione setdiff1d()
da NumPy
. Questa funzione accetta tre parametri, ar1
, ar2
e assume_unique
. ar1
e ar2
sono due array NumPy. E assume_unique
è un argomento booleano opzionale. Il suo valore predefinito è False
. Quando è True
, si presume che i due array di input siano univoci e questa ipotesi può accelerare il tempo di calcolo.
setdiff1d()
restituisce i valori univoci in ar1
che non sono in ar2
.
Fare riferimento al codice seguente.
import numpy as np
myArray = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
indexes = [3, 5, 7]
modifiedArray = np.setdiff1d(myArray, indexes)
print(modifiedArray)
Produzione:
[ 1 2 4 6 8 9 10]
A differenza di numpy.delete()
, entrambi gli array sono array NumPy con elementi effettivi al loro interno ma non indici.
Per saperne di più su questa funzione, fare riferimento alla documentazione ufficiale di questa funzione qui.