Vettori di pitone, matrici e array con numpy

Vettori di pitone, matrici e array con numpy
In questa lezione, esamineremo alcuni consigli e trucchi ordinati per giocare con vettori, matrici e array usando la biblioteca numpy in Python. Questa lezione è un ottimo punto di partenza se stai iniziando alla scienza dei dati e hai bisogno di una panoramica matematica introduttiva di questi componenti e come possiamo giocare con loro usando numpy in codice.

La biblioteca Numpy ci consente di eseguire varie operazioni che devono essere eseguite su strutture di dati spesso utilizzate nell'apprendimento automatico e nella scienza dei dati come vettori, matrici e array. Mostreremo solo operazioni più comuni con numpy che vengono utilizzate in molte condutture di apprendimento automatico. Infine, si prega di notare che Numpy è solo un modo per eseguire le operazioni, quindi le operazioni matematiche che mostriamo sono l'obiettivo principale di questa lezione e non il pacchetto Numpy stesso. Iniziamo.

Cos'è un vettore?

Secondo Google, un vettore è una quantità con direzione e grandezza, soprattutto per determinare la posizione di un punto nello spazio rispetto a un altro.

I vettori sono molto importanti nell'apprendimento automatico in quanto non solo descrivono la grandezza ma anche la direzione delle caratteristiche. Possiamo creare un vettore in numpy con il seguente frammento di codice:

Importa Numpy come NP
row_vector = np.Array ([1,2,3])
Stampa (row_vector)

Nel frammento di codice sopra, abbiamo creato un vettore di riga. Possiamo anche creare un vettore di colonna come:

Importa Numpy come NP
col_vector = np.Array ([[1], [2], [3]])
Stampa (Col_Vector)

Fare una matrice

Una matrice può essere semplicemente compresa come un array bidimensionale. Possiamo fare una matrice con numpy creando un array multidimensionale:

Matrix = np.Array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Stampa (Matrix)

Sebbene Matrix sia esattamente simile all'array multidimensionale, La struttura dei dati della matrice non è raccomandata Per due motivi:

  1. L'array è lo standard quando si tratta del pacchetto numpy
  2. La maggior parte delle operazioni con numpy restituisce array e non una matrice

Usando una matrice sparsa

Per ricordare, una matrice sparsa è quella in cui la maggior parte degli oggetti è zero. Ora, uno scenario comune nell'elaborazione dei dati e nell'apprendimento automatico è le matrici di elaborazione in cui la maggior parte degli elementi sono zero. Ad esempio, considera una matrice le cui righe descrivono ogni video su YouTube e le colonne rappresenta ogni utente registrato. Ogni valore rappresenta se l'utente ha visto un video o no. Naturalmente, la maggior parte dei valori in questa matrice sarà zero. IL vantaggio con la matrice sparsa è che non memorizza i valori che sono zero. Ciò si traduce anche in un enorme vantaggio computazionale e ottimizzazione dell'archiviazione.

Creiamo una matrice di scintilla qui:

da Scipy Import Sparse
originale_matrix = np.array ([[1, 0, 3], [0, 0, 6], [7, 0, 0]])
sparste_matrix = spars.csr_matrix (originale_matrix)
Stampa (Sparste_Matrix)

Per capire come funziona il codice, esamineremo l'output qui:

Nel codice sopra, abbiamo usato una funzione di Numpy per creare un Riga spara compressa Matrix in cui gli elementi diversi da zero sono rappresentati usando gli indici a base zero. Esistono vari tipi di matrice sparsa, come:

  • Colonna sparsa compressa
  • Elenco di elenchi
  • Dizionario delle chiavi

Non ci immergeremo in altre matrici sparse qui, ma sappi che ognuno dei loro è un uso è specifico e nessuno può essere definito "migliore".

Applicare le operazioni a tutti gli elementi vettoriali

È uno scenario comune quando dobbiamo applicare un'operazione comune a più elementi vettoriali. Questo può essere fatto definendo un lambda e quindi vettorializzando lo stesso. Vediamo un frammento di codice per lo stesso:

Matrix = np.vettore([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Mul_5 = lambda x: x * 5
vectoRized_mul_5 = np.vectoRize (MUL_5)
vectoRized_mul_5 (matrice)

Per capire come funziona il codice, esamineremo l'output qui:

Nello snippet di codice sopra, abbiamo usato la funzione vettoriale che fa parte della libreria numpy, per trasformare una semplice definizione di lambda in una funzione che può elaborare ogni elemento del vettore. È importante notare che Vectorize è Solo un ciclo sugli elementi e non ha alcun effetto sulle prestazioni del programma. Numpy lo consente anche trasmissione, Ciò significa che invece del codice complesso sopra, avremmo potuto semplicemente fare:

Matrix * 5

E il risultato sarebbe stato esattamente lo stesso. Volevo prima mostrare la parte complessa, altrimenti avresti saltato la sezione!

Media, varianza e deviazione standard

Con Numpy, è facile eseguire operazioni relative a statistiche descrittive sui vettori. La media di un vettore può essere calcolata come:

np.Media (Matrix)

La varianza di un vettore può essere calcolata come:

np.var (matrix)

La deviazione standard di un vettore può essere calcolata come:

np.STD (Matrix)

L'output dei comandi sopra sulla matrice data è riportato qui:

Trasposizione di una matrice

La trasposizione è un'operazione molto comune di cui sentirai parlare ogni volta che sei circondato da matrici. La trasposizione è solo un modo per scambiare i valori colonnari e di riga di una matrice. Si prega di notare che a Il vettore non può essere trasposto Come vettore è solo una raccolta di valori senza che quei valori vengano classificati in righe e colonne. Si prega di notare che la conversione di un vettore di riga in un vettore di colonna non sta trasponendo (in base alle definizioni di algebra lineare, che è al di fuori dell'ambito di questa lezione).

Per ora, troveremo la pace solo trasponendo una matrice. È molto semplice accedere alla trasposizione di una matrice con numpy:

matrice.T

L'output del comando sopra sulla matrice data è riportato qui:

La stessa operazione può essere eseguita su un vettore di riga per convertirlo in un vettore di colonna.

Appiattire una matrice

Possiamo convertire una matrice in un array unidimensionale se desideriamo elaborare i suoi elementi in modo lineare. Questo può essere fatto con il seguente frammento di codice:

matrice.appiattire()

L'output del comando sopra sulla matrice data è riportato qui:

Si noti che la matrice appiattita è un array unidimensionale, semplicemente lineare nella moda.

Calcolo di autovalori e autovettori

Gli autovettori sono molto comunemente usati nei pacchetti di apprendimento automatico. Quindi, quando una funzione di trasformazione lineare è presentata come una matrice, quindi x, gli autovettori sono i vettori che cambiano solo in scala del vettore ma non nella sua direzione. Possiamo dire che:

XV = γV

Qui, x è la matrice quadrata e γ contiene gli autovalori. Inoltre, V contiene gli autovettori. Con Numpy, è facile calcolare autovalori e autovettori. Ecco lo snippet di codice in cui dimostriamo lo stesso:

valuta, evettori = NP.linalg.eig (matrice)

L'output del comando sopra sulla matrice data è riportato qui:

Dot Products of Vectors

Dot Products of Vectors è un modo per moltiplicare 2 vettori. Ti dice quanto dei vettori sono nella stessa direzione, A differenza del prodotto incrociato che ti dice il contrario, quanto poco sono i vettori nella stessa direzione (chiamati ortogonali). Possiamo calcolare il prodotto DOT di due vettori come indicato nello snippet di codice qui:

a = np.Array ([3, 5, 6])
b = np.Array ([23, 15, 1])
np.dot (a, b)

L'output del comando sopra sugli array indicati è riportato qui:

Aggiunta, sottrarre e moltiplicare le matrici

Aggiungere e sottrarre più matrici è un funzionamento piuttosto semplice nelle matrici. Ci sono due modi in cui questo può essere fatto. Diamo un'occhiata allo snippet del codice per eseguire queste operazioni. Allo scopo di mantenerlo semplice, useremo la stessa matrice due volte:

np.Aggiungi (Matrix, Matrix)

Successivamente, due matrici possono essere sottratte come:

np.Sottrai (matrice, matrice)

L'output del comando sopra sulla matrice data è riportato qui:

Come previsto, ciascuno degli elementi nella matrice viene aggiunto/sottratto con l'elemento corrispondente. Moltiplicare una matrice è simile alla ricerca del prodotto DOT come abbiamo fatto in precedenza:

np.punto (matrice, matrice)

Il codice sopra troverà il vero valore di moltiplicazione di due matrici, dato come:

Matrix * Matrix

L'output del comando sopra sulla matrice data è riportato qui:

Conclusione

In questa lezione, abbiamo esaminato molte operazioni matematiche relative a vettori, matrici e array che sono comunemente usate l'elaborazione dei dati, le statistiche descrittive e la scienza dei dati. Questa è stata una rapida lezione che copre solo le sezioni più comuni e più importanti dell'ampia varietà di concetti, ma queste operazioni dovrebbero dare un'ottima idea su ciò che tutte le operazioni possono essere eseguite mentre si tratta di queste strutture di dati.

Per favore condividi il tuo feedback liberamente sulla lezione su Twitter con @Linuxhint e @sbmaggarwal (sono io!).