QNA > C > Come Fare Un Array In Python

Come fare un array in Python

Ci sono almeno tre risposte ragionevoli alla tua domanda.

L'approccio più semplice è semplicemente usare il tipo di lista di Python. La semantica è simile a quella di un array ... potete usare la stessa sintassi per l'indicizzazione e lo slicing.

Potete anche importare array (dalle librerie standard Python) e usare array.array(sometype, [x, y, z, ...]) per istanziarne uno.

La differenza principale tra una lista Python e un oggetto array.array() è che una lista Python è generalizzata ... può contenere riferimenti a qualsiasi oggetto. Un array.array() è istanziato con un tipo specifico (tra una lista vincolata o tipi primitivi di numeri e caratteri). Possono essere molto più efficienti in termini di memoria per array di grandi dimensioni e possono essere utili quando si marshalano dati da e verso certi tipi di API e protocolli di basso livello.

Nota che il modulo array della libreria standard di Python non supporta matrici o altri array n-dimensionali.

Quindi la terza risposta ragionevole è usare NumPy. Questo è probabilmente quello che si dovrebbe fare. Gli array Numpy sono multidimensionali, implementati in C e molte operazioni sono supportate come vettori attraverso questi array. (In altre parole è possibile eseguire in modo efficiente un certo numero di operazioni di array e matrici usando NumPy perché l'operazione viene passata, dall'interprete o dalla VM, nel codice C compilato di livello inferiore).

In altre parole se si è seriamente intenzionati ad usare gli array, piuttosto che le liste, allora probabilmente si dovrebbe saltare il modulo array nella libreria standard e iniziare ad imparare NumPy. Imparare NumPy implica imparare ad evitare certi costrutti che costringono l'interprete (tecnicamente la macchina virtuale di Python) ad iterare sul contenuto degli array ... e sostituirli con le operazioni che possono essere gestite nel codice macchina compilato (nativo) del modulo sottostante.

Questo è il motivo per cui così tanta seria analisi dei dati è fatta in Python (usando NumPy) oggi. Inoltre è comune usare pandas: Python Data Analysis Library e h5py: HDF5 for Python with NumPy.

Pandas costruisce "data frames" sopra la base NumPy --- e aggiunge una vertiginosa collezione di funzioni che possono operare su questi, raggruppando, impilando e disimpilando, filtrando e riempiendo, rimodellando, ruotando e così via. (Per un campione travolgente di 10 minuti di pandas' caratteristiche guardando: 10-minute tour of pandas). I data frame sono dati con metadati (etichette sulle colonne) ... un concetto che pandas prende in prestito dal linguaggio di programmazione R.

h5py potrebbe sembrare a prima vista sovrapporsi a pandas. È un wrapper Python intorno alle librerie HDF5 (Hierarchical Data Format 5) con alcuni hook per applicare alcune funzioni Numpy ai file HDF5). Pandas ha funzioni per leggere ed esportare in HDF5; ma tipicamente deve impaginare interi set di dati in memoria. h5py ha l'abilità di lavorare con set di dati molto più grandi mantenendo solo limitati sottoinsiemi di dati in memoria. h5py ha anche alcune caratteristiche per integrarsi con MPI (mpi4py) ... l'interfaccia di passaggio dei messaggi per i calcoli tra cluster. (C'è anche PyTables che è anche costruito intorno al supporto di HDF5; il confronto tra i due è un po' complicato: FAQ - PyTables: Compare to h5py, vs. FAQ - h5py 2.5.0 differences from h5py).

Come se non bastasse, c'è anche ContinuumIO/blaze, che è una sorta di traduttore e dispatcher per eseguire operazioni simili a NumPy su una varietà di diversi tipi di back-end (HDF5, SQL, MongoDB, Apache Spark, etc).

Può sembrare che io sia andato lontano dalla tua domanda. Ma il mio punto è che probabilmente dovreste imparare NumPy se avete intenzione di fare qualcosa di serio con gli array in Python. Tutte le altre cose di cui ho blaterato sono costruite intorno a NumPy e presuppongono una comprensione dei concetti di vettorizzazione e trasmissione di NumPy (operazioni mappate sui dati, contro l'iterazione sui dati che esegue operazioni compilate in byte nella VM).

Quindi, ecco come si "fa un array" in Python.

Di Beshore

Perché Hulu è disponibile solo negli Stati Uniti? :: Can anybody elaborate the use of c_ in numpy?
Link utili