API · NumPy

Funzione Python NumPy numpy.shape()

Usa numpy.shape() per ottenere le dimensioni di un array come tupla, oppure leggile dal suo attributo .shape.

In questa pagina

Usa la funzione numpy.shape() di NumPy per conoscere le dimensioni di un array. La funzione restituisce una tupla di interi, in cui ogni valore indica la lunghezza lungo una dimensione. Per esempio, (5, 3) significa cinque righe e tre colonne. La tupla descrive la forma attuale dell’input; il fatto che una tupla sia immutabile non determina se l’array stesso possa essere rimodellato.

Sintassi di numpy.shape()

Chiama numpy.shape(a) passando il valore di cui vuoi esaminare le dimensioni. L’argomento a è obbligatorio e può essere un array NumPy o un altro valore simile a un array, come una sequenza annidata. La funzione restituisce una tupla con un intero per ciascuna dimensione, nell’ordine. Un input unidimensionale ha un solo valore nella tupla; un input bidimensionale riporta le lunghezze delle righe e delle colonne; gli input con più dimensioni aggiungono una lunghezza per ogni asse ulteriore.

Esempi di numpy.shape()

L’esempio seguente crea un array NumPy bidimensionale e stampa le dimensioni restituite da numpy.shape().

import numpy as np

array = np.array([[11, 12, 5], [15, 6, 10], [10, 8, 12], [12, 15, 8], [34, 78, 90]])
print(np.shape(array))
(5, 3)

Il primo valore della tupla descrive il primo asse, il secondo valore descrive il secondo asse e così via. Per un array bidimensionale, questi assi corrispondono a righe e colonne. Il risultato è utile quando vuoi verificare come sono organizzati i dati prima di selezionare un asse o passarli a un’altra operazione.

Per un array senza valori lungo il suo unico asse, la forma è (0,). Un array unidimensionale che contiene [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] ha forma (20,). Un array con cinque righe e tre colonne ha forma (5, 3), mentre un array tridimensionale organizzato in tre gruppi di due righe, con tre valori per riga, ha forma (3, 2, 3). Queste tuple indicano, nell’ordine, la lunghezza di ciascun asse; non descrivono i valori contenuti nell’array. La virgola nella tupla con un solo elemento (20,) è sintassi Python e distingue una tupla da un intero tra parentesi.

Questo esempio Python crea un array senza valori e ne recupera la forma. Non produce output perché assegna la forma a una variabile senza chiamare print().

import numpy as np

empty_array = np.array([])
empty_shape = np.shape(empty_array)

La funzione riporta le lunghezze ricavate dalle dimensioni dell’input. Se il risultato è diverso da quello atteso, controlla come è stato costruito l’input e l’ordine delle sue sequenze annidate. Per esempio, in un array bidimensionale regolare, il primo valore della forma indica il numero di righe e il secondo quello delle colonne. NumPy riporta la struttura presente nei dati, senza dedurre eventuali etichette desiderate per righe o colonne. Con dati annidati irregolari, il comportamento può dipendere dalla versione di NumPy e dalle regole di conversione; se ti servono lunghezze degli assi coerenti, usa un array regolare.

Uso dell’attributo .shape

Un array NumPy espone le proprie dimensioni anche tramite l’attributo .shape. Per un array a, a.shape fornisce la stessa tupla di numpy.shape(a). Usa la funzione quando vuoi passare un valore a un’operazione generica; usa l’attributo quando hai già un array e vuoi leggerne direttamente le dimensioni. Si accede all’attributo senza parentesi, mentre numpy.shape() è una chiamata di funzione.

Per esempio, per un array con cinque righe e tre colonne, a.shape restituisce (5, 3), come numpy.shape(a). Nessuna delle due forme modifica l’array: entrambe ne riportano le dimensioni. Se rimodelli un array, dopo l’operazione entrambe le forme riportano le dimensioni aggiornate. Questa distinzione è utile per fare debug nella preparazione dei dati: controlla la forma prima di un’operazione per verificare il numero e l’ordine degli assi previsti, poi usa la tupla risultante per individuare la dimensione da esaminare. numpy.shape() è una funzione, mentre .shape è un attributo dell’array.