Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the elementor domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/gedemyit/public_html/wp-includes/functions.php on line 6170

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the elementor-pro domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/gedemyit/public_html/wp-includes/functions.php on line 6170
Set in NumPy – Gedemy

Set in NumPy

I set in NumPy permettono di lavorare con valori unici all’interno degli array, eseguendo operazioni molto utili come unione, intersezione, differenza e differenza simmetrica. Anche se NumPy non usa i set nello stesso modo del tipo set nativo di Python, mette a disposizione una serie di funzioni estremamente pratiche per trattare gli elementi di un array come se fossero insiemi matematici.

Questa caratteristica è particolarmente interessante quando si lavora con dati duplicati, confronti tra collezioni di valori oppure operazioni di pulizia e analisi. Per chi è agli inizi, capire queste funzioni significa acquisire uno strumento concreto per manipolare dati in modo rapido, leggibile ed efficiente.

Come creare insiemi in NumPy

In NumPy, la creazione di un insieme non avviene tramite una struttura dedicata come accade con i set di Python. Nella pratica, si parte da un array e si usa la funzione unique() per ottenere soltanto i valori distinti.

Ecco un esempio semplice:

import numpy as np

array = np.array([1, 2, 2, 3, 4, 4, 5])
insieme = np.unique(array)

print(insieme)

Il risultato sarà un array contenente solo i valori unici. Questo approccio è molto utile perché consente di eliminare i duplicati in pochi secondi e di preparare i dati per successive operazioni insiemistiche.

Se vuoi verificare anche quante volte compare ciascun elemento, puoi usare un parametro aggiuntivo:

import numpy as np

array = np.array([1, 2, 2, 3, 3, 3, 4])
valori, conteggi = np.unique(array, return_counts=True)

print(valori)
print(conteggi)

Questo metodo è spesso usato in fase di analisi esplorativa, perché aiuta a capire la distribuzione dei dati senza dover scrivere logiche più lunghe o complesse.

Unione di insiemi con NumPy

L’unione di insiemi serve a combinare i valori di due array mantenendo una sola copia per ogni elemento. In NumPy questa operazione si esegue con union1d().

Vediamo subito un esempio pratico:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])

unione = np.union1d(a, b)

print(unione)

Il risultato conterrà tutti i valori presenti nei due array, senza ripetizioni. È una funzione molto comoda quando bisogna accorpare elenchi di identificativi, categorie o numeri provenienti da fonti diverse.

Un aspetto importante da ricordare è che NumPy restituisce un array ordinato. Questo comportamento è spesso vantaggioso, soprattutto quando si desidera una base dati pulita e già pronta per confronti successivi.

Intersezione tra insiemi in NumPy

L’intersezione di insiemi permette di trovare i valori comuni tra due array. In NumPy si utilizza la funzione intersect1d(), molto intuitiva anche per chi non ha ancora grande esperienza.

Ecco un esempio:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])

intersezione = np.intersect1d(a, b)

print(intersezione)

In questo caso, il risultato sarà composto dagli elementi presenti in entrambi gli array. È un’operazione frequente in contesti reali: per esempio, quando si vogliono individuare utenti comuni, codici condivisi o valori ripetuti tra due dataset.

Dal punto di vista pratico, questa funzione evita cicli manuali e controlli ridondanti, rendendo il codice più compatto e anche più leggibile.

Come calcolare la differenza tra insiemi

La differenza tra insiemi serve a trovare gli elementi presenti in un array ma assenti nell’altro. In NumPy si usa la funzione setdiff1d().

Vediamo il caso più comune:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])

differenza = np.setdiff1d(a, b)

print(differenza)

Il risultato conterrà gli elementi che appartengono ad a ma non a b. Questo tipo di controllo è molto utile quando bisogna scoprire quali record mancano, quali valori non coincidono o quali elementi appartengono solo a una sorgente dati.

È bene notare che la differenza non è simmetrica. Se inverti l’ordine degli array, cambierà anche il risultato:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])

print(np.setdiff1d(a, b))
print(np.setdiff1d(b, a))

Questa distinzione è fondamentale, soprattutto quando si lavora su controlli di coerenza o confronti tra insiemi di dati non identici.

Differenza simmetrica degli insiemi con NumPy

La differenza simmetrica include gli elementi presenti in uno solo dei due array, escludendo quelli comuni. In NumPy si usa la funzione setxor1d().

Ecco un esempio chiaro:

import numpy as np

a = np.array([1, 2, 3, 4])
b = np.array([3, 4, 5, 6])

differenza_simmetrica = np.setxor1d(a, b)

print(differenza_simmetrica)

Il risultato sarà formato dagli elementi che compaiono in uno solo dei due array. È una funzione particolarmente utile quando vuoi mettere in evidenza le differenze complessive tra due insiemi, senza dover eseguire due differenze separate e poi combinarle manualmente.

In un flusso di lavoro reale, questa operazione è efficace per confrontare elenchi aggiornati, controllare discrepanze tra esportazioni di dati o verificare modifiche tra due versioni di uno stesso insieme di valori.

Perché conviene usare gli insiemi in NumPy

Usare le operazioni insiemistiche in NumPy offre diversi vantaggi. Prima di tutto, consente di scrivere codice più pulito e più leggibile. Invece di costruire controlli manuali con cicli e condizioni, puoi affidarti a funzioni già ottimizzate e facili da interpretare.

Un altro punto di forza riguarda le prestazioni. Quando gli array diventano grandi, le funzioni di NumPy aiutano a gestire i dati in modo più efficiente rispetto a molte soluzioni scritte a mano in Python puro. Questo si traduce in script più veloci e in una maggiore semplicità di manutenzione.

Infine, le operazioni tra insiemi sono preziose in tanti scenari pratici: pulizia dei dati, rimozione dei duplicati, confronto tra dataset, controllo qualità, analisi esplorativa e gestione di valori distinti. Per questo motivo, conoscere questi strumenti è utile non solo a livello teorico, ma anche nel lavoro quotidiano con NumPy.

Per esempio, un piccolo flusso combinato può essere questo:

import numpy as np

a = np.array([1, 2, 2, 3, 4, 4])
b = np.array([3, 4, 4, 5, 6])

a_unici = np.unique(a)
b_unici = np.unique(b)

print(np.union1d(a_unici, b_unici))
print(np.intersect1d(a_unici, b_unici))
print(np.setdiff1d(a_unici, b_unici))
print(np.setxor1d(a_unici, b_unici))

Questo esempio mostra bene quanto il lavoro sugli insiemi possa diventare lineare e immediato, anche partendo da array con valori ripetuti.

Corsi correlati

Design Pattern per videogiochi

I Design Pattern sono soluzioni a problemi comuni che si incontrano nello sviluppo del software. Nel contesto dei videogiochi, questi pattern possono aiutare a gestire la complessità crescente dei giochi moderni. Sei appassionato di videogiochi? Hai mai pensato a come vengono progettati e sviluppati? Sei curioso di scoprire i segreti dietro la creazione dei tuoi giochi preferiti? Allora sei nel posto giusto! Questo corso è stato progettato per fornirti una solida comprensione dei Design Pattern, strumenti fondamentali per ogni sviluppatore di giochi. Attraverso esempi pratici e realistici, esploreremo insieme come questi pattern possono aiutarti a creare giochi più efficienti, flessibili e mantenibili.

Corso Fondamenti di Python

Python, uno dei linguaggi di programmazione più popolari al mondo, è ampiamente utilizzato da colossi dell’informatica e della tecnologia come Google, la Nasa e Mozilla.
Questo corso sui fondamenti di Python esplorerà le ragioni del suo successo duraturo. Impareremo la potente ed espressiva sintassi di Python, che consente di ottenere risultati impressionanti con poche righe di codice.

Blender Masterclass 2

I paesaggi, in generale, possono risultare intimidatori data la loro complessità, costituita da numerosi elementi che sembrano formare qualcosa di virtualmente infinito. Durante le lezioni di questo corso, ci concentreremo su una scomposizione delle diverse fasi coinvolte nella creazione di una scena, affrontandole una alla volta attraverso passi graduati.

Blender Masterclass 1

In questo corso di Blender 3D, Masha, in collaborazione con Gedemy, vi mostrerà il processo di modellazione, UV mapping, shading, e texture painting di un asset. Una volta apprese le basi, vedremo anche come effettuare il baking delle textures e la preparazione con successivo export della mesh in modo che possa essere utilizzabile all’interno di un qualsiasi altro software.

Crea il tuo account gratuito Gedemy

Gedemy è la prima piattaforma di formazione italiana che ti permette di sviluppare competenze in ambiti come Game Design, Programming, Arte, 3D, Tech, AI e molto altro.


Notice: ob_end_flush(): Failed to send buffer of zlib output compression (0) in /home/gedemyit/public_html/wp-includes/functions.php on line 5493