Attributi e ispezione degli array
Esplori gli attributi ndim, shape, size e dtype e impari a modificare la forma di un array con reshape().
Attributi e ispezione degli array è una lezione Pandas & NumPy Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Pandas & NumPy Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Pandas & NumPy Academy include 4 lezioni in totale.
Perché gli attributi degli array sono importanti
Prima di lavorare su un array, è utile conoscerne shape, dimensioni e dtype. NumPy fornisce queste informazioni immediatamente tramite attributi leggeri.
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print('ndim:', a.ndim) # 2
print('shape:', a.shape) # (2, 3)
print('size:', a.size) # 6
print('dtype:', a.dtype) # int64ndim: numero di dimensioni
ndim indica quante dimensioni ha un array: una lista piatta ne ha 1, una lista di liste ne ha 2 e i tensori di ML spesso ne hanno 3 o 4.
import numpy as np
v = np.array([1, 2, 3])
print(v.ndim) # 1
m = np.zeros((4, 5))
print(m.ndim) # 2
t = np.ones((2, 3, 4))
print(t.ndim) # 3shape: la tupla delle dimensioni
shape è una tupla con una dimensione per ogni asse. Per un array 2D, contiene (righe, colonne) e può essere destrutturata per scrivere codice flessibile.
import numpy as np
a = np.arange(24).reshape(2, 3, 4)
print(a.shape) # (2, 3, 4)
n_rows, n_cols = np.zeros((5, 7)).shape
print(n_rows, n_cols) # 5 7size: numero totale di elementi
size indica il numero totale di elementi: il prodotto di tutti i valori in shape. È utile per verificare che un reshape non abbia perso nulla.
import numpy as np
a = np.ones((3, 4, 5))
print(a.size) # 60 (3*4*5)
print(np.prod(a.shape))# 60
# Memory estimate in bytes
print(a.size * a.itemsize, 'bytes') # 480 bytesdtype: tipo dei dati degli elementi
Il dtype descrive il tipo di ogni elemento, mentre itemsize indica la sua dimensione in byte. Passare da float64 a float32 dimezza la memoria e spesso rende l'esecuzione più veloce.
import numpy as np
a = np.array([1.5, 2.5, 3.5])
print(a.dtype) # float64
print(a.itemsize) # 8 bytes
b = a.astype(np.float32)
print(b.dtype) # float32
print(b.itemsize) # 4 bytesnbytes: memoria totale utilizzata
nbytes indica la memoria totale dell'array in byte: size moltiplicato per itemsize. Lo controlli prima e dopo il downcasting per verificare di aver effettivamente risparmiato spazio.
import numpy as np
a = np.ones((1000, 1000), dtype=np.float64)
print(a.nbytes) # 8000000 (8 MB)
b = a.astype(np.float32)
print(b.nbytes) # 4000000 (4 MB)reshape(): modificare la forma di un array
reshape assegna all'array una nuova forma senza copiare i dati, purché il numero di elementi resti invariato. Passi -1 e NumPy calcolerà automaticamente quella dimensione.
import numpy as np
a = np.arange(12)
print(a.shape) # (12,)
b = a.reshape(3, 4)
print(b.shape) # (3, 4)
c = a.reshape(2, -1) # -1 inferred as 6
print(c.shape) # (2, 6)Appiattire con ravel() e flatten()
Sia ravel() sia flatten() riducono un array a una dimensione. La differenza è che ravel di solito condivide la memoria, senza creare una copia, mentre flatten crea sempre una nuova copia.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
r = m.ravel() # view (usually)
f = m.flatten() # always a copy
print(r) # [1 2 3 4 5 6]
print(f) # [1 2 3 4 5 6]Trasporre gli array
L'attributo .T restituisce la trasposta, scambiando righe e colonne. L'operazione è gratuita, perché non copia i dati, ed è essenziale per allineare le matrici.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]]) # shape (2, 3)
print(m.T.shape) # (3, 2)
print(m.T)
# [[1 4]
# [2 5]
# [3 6]]strides: disposizione in memoria
strides indica di quanti byte NumPy avanza nella memoria per ogni dimensione. Ecco perché trasporre è gratuito: vengono semplicemente scambiati i valori di stride.
import numpy as np
a = np.ones((3, 4), dtype=np.float64)
print(a.strides) # (32, 8) — 4 cols x 8 bytes, 1 col x 8 bytes
b = a.T
print(b.strides) # (8, 32) — strides swapped, no data copyControllare viste e copie
Una view condivide la memoria con l'originale, quindi modificare una modifica anche l'altra; una copia è indipendente. Usi np.shares_memory(a, b) per verificare quale delle due ha.
import numpy as np
a = np.arange(6)
b = a.reshape(2, 3) # view
print(np.shares_memory(a, b)) # True
c = a.copy()
print(np.shares_memory(a, c)) # FalseVerifica rapida
Verifichi la Sua comprensione degli attributi degli array NumPy trattati in questa lezione.
Riepilogo della lezione
Ottimi progressi! ndim, shape e size descrivono la struttura, dtype descrive i dati, reshape restituisce una vista mentre flatten crea sempre una copia. Prossimo argomento: l'aritmetica sugli array.
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Attributi e ispezione degli array» è gratuita?
Sì — il testo completo di «Attributi e ispezione degli array» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Pandas & NumPy Academy, passa a CoddyKit PRO. Il corso Pandas & NumPy Academy include 4 lezioni in totale.
Cosa imparerò in «Attributi e ispezione degli array»?
Esplori gli attributi ndim, shape, size e dtype e impari a modificare la forma di un array con reshape(). Eserciti Pandas & NumPy Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Pandas & NumPy Academy?
Non è richiesta alcuna esperienza precedente. Pandas & NumPy Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Attributi e ispezione degli array»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Pandas & NumPy Academy?
Sì. Ogni lezione Pandas & NumPy Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Creazione di array NumPy
- Attributi e ispezione degli array
- Aritmetica elemento per elemento
- Slicing e indicizzazione degli array