Rimuovi elementi dall'array in NumPy

Vaibhav Vaibhav 10 ottobre 2023
  1. Rimuovi elementi usando la funzione numpy.delete()
  2. Rimuovi elementi usando la funzione numpy.setdiff1d()
Rimuovi elementi dall'array in NumPy

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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.