NUMPY? no, grazie, non compriamo niente.

Non è una religione che cerca adepti. E neanche l’ennesimo venditore porta a porta che cerca di propinarci aspirapolveri o dentifrici americani. Allora di che cosa stiamo parlando? Num-py sta per libreria numerica per python come dice la parola stessa tradisce nel suo prefisso e suffisso il senso semantico, vedere https://numpy.org/ . Trattasi di una libreria che contiene strutture dati e funzionalità che permettono la massima espressione per arrays e matrici di dati! Ideale per attività scientifiche, per il game development e per qualsiasi situazione dove necessitano lunga lista di dati, pensiamo solo al nuovo settore in sviluppo del machine learning. Perchè conviene dare un occhiata a Numpy, libreria scritta in C: per l’uso ricorrente degli array e matrici supportati da strumenti tematici che trovano largo spazio in vastissime applicazioni. Matrici (in matematica, in particolare in algebra lineare, una matrice è una tabella ordinata di elementi) e array (cassetti di dati) sono oggetti di uso frequente nelle data science ma non solo. In questa breve esplorazione andremo a vedere Anaconda e Jupyter per creare nuovi arrays e matrici, afferrare in dati in essi contenuti (FETCH) e modificare gli operatori. Il primo passo è scaricare l’ambiente integrato Anaconda , https://www.anaconda.com/ , download https://www.anaconda.com/products/individual , documentazione utile https://docs.anaconda.com/anaconda/user-guide/getting-started/ , che contiene al suo interno Jupyter . JupyterLab, https://jupyter.org/, è un ambiente di sviluppo interattivo basato sull’ idea web che possiamo lavorare come un blocco note virtuale con codice e dati Jupyter. JupyterLab è flessibile: configura e organizza l’interfaccia utente per supportare un’ampia gamma di flussi di lavoro nella scienza dei dati, informatica scientifica e machine learning. JupyterLab è estensibile e modulare: scrivi plugin che aggiungono nuovi componenti e si integrano con quelli esistenti. Per lanciare il nostro libro note si avvia Anaconda dopo una installazione intuitiva e si clicca sul quadrante Jupyter che sta per quaderno note scientifico, come mostrato nella gallery. Ora che ci siamo attrezzati con una serie di elementi standard del tipo Python 3.6, Anaconda 5.2, Jupyter Notebook 5.5, NumPy 1.15, vediamo cosa può fare la libreria scientifica Numpy. Prima cosa da fare importare la libreria specifica nel file py (python) operazione che si ottiene con:

import numpy as np

la libreria gestisce tutto senza le virgole canoniche della manipolazione classica che separano gli elementi. Se voglio dichiarare un array e stamparlo a video come faccio?

an_array = np.arange(0, 6)
print(an_array)

risultato a video: [0 1 2 3 4 5]

se volessi sostituire lo zero iniziale con un dieci e stampare a video come faccio?

an_array[0] = 10
print(an_array)

risultato: [10 1 2 3 4 5]

se volessi appendere altri due numeri alla fine dell’ array e stamparli che devo fare?

an_array = np.arange(0, 6)
print(np.append(an_array, [6, 7]))

risultato a video: [0 1 2 3 4 5 6 7]

posso inserire un array dentro l’array in posizione uno rispetto alla stampa precedente? Si:

print(np.insert(an_array, 1, [10, 11]))

risultato di stampa: [ 0 10 11 1 2 3 4 5]

posso cancellare un array rispetto a [0 1 2 4 5]?

print(np.delete(an_array, 3))
risultato a video: [0 1 2 4 5]

posso fare le operazioni matematiche sugli array del tipo:

print(an_array * 2)

si per avere a video: [ 0 2 4 6 8 10] rispetto al precedente [0 1 2 4 5]

da questi esempi sugli array, dove posso contare, invertire, sommare, estrapolare e altre infinite operazioni in ogni punto specifico, posso fare medie, posso interrogare proprietà dell’ array a mio piacimento e altro si capisce come questa libreria numpy sia dedicata completamente al calcolo matematico offrendo opzioni veloci che aumentano la portata delle modellazioni. Lo stesso avviene per un insieme di dati ordinati in righe e colonne (definizione di matrici). Prima ricordiamo un aspetto importante: un dato (dal latino datum che significa dono, cosa data) è una descrizione elementare, spesso codificata, di un’informazione, un’entità, di un fenomeno, di una transazione, di un avvenimento o di altro.

Creare una matrice prima importando la libreria:

import numpy as np

two_by_two = np.matrix([[1, 2],[3, 4]])
print(two_by_two)

a video:

[[1 2]
[3 4]]

se volessi creare una matrice con tre colonne e due righe?

print(np.zeros([3, 2]))

[[0. 0.]
[0. 0.]
[0. 0.]]

se volessi creare una matrice larga tre colonne e due righe?

print(np.ones([2, 3]))
[[1. 1. 1.]
[1. 1. 1.]]

ovviamente sulle matrice posso fare infinite modellazioni, posso modificare, tagliare, spostare, ruotare, calcolare, estrapolare, interrogare, invertire e tanto altro. Posso addirittura usare le istruzioni condizionali e ciclare righe e colonne per intersecarle nella stampa a video del famoso matrix fatto di codice binario, una sorta di ciao mondo delle matrici con una griglia di cinque x cinque:

import numpy as np
image_matrix = np.matrix([[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0]])
print(image_matrix)

rows = image_matrix.shape[0]
columns = image_matrix.shape[1]
print(rows)
print(columns)

for row in range(rows):
for column in range(columns):
if image_matrix[row, column] == 0:
image_matrix[row, column] = 1
else:
image_matrix[row, column] = 0
print(image_matrix)

[[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 1 1]
[1 1 0 1 1]]

Numpy è una libreria che si presta a un uso quotidiano, pensiamo alla borsa, pensiamo alla domotica, pensiamo solo ai voti di uno studente da analizzare:

import numpy as np

student_grades = np.array([56, 78, 98, 90, 58, 64, 67, 72, 93, 51])
print(student_grades)
[56 78 98 90 58 64 67 72 93 51]

class_average = np.average(student_grades)
print(class_average)

che ritorna 72.7

highest_grade = np.amax(student_grades)
print(highest_grade)

lowest_grade = np.amin(student_grades)
print(lowest_grade)

che ritorna

98
51

Abbiamo solo gettato il sasso nello stagno per offrire un ventaglio di opzioni che fino a ieri ci erano sconosciute e che oggi ci incuriosiscono e che magari domani ci invoglieranno ad approfondire. Python alla luce di quanto visto non è un linguaggio da sottovalutare, anzi gode di ampia reputazione nel mondo scientifico, vedere ad esempio approfondimenti in uno dei portali di umbriaway consulting, https://umbriawayamplifica.wordpress.com/2020/05/13/python-e-gli-operatori-di-assegnazione-matematici-logici-bitwise-overview/

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...