Home » Articole » Articole » Afaceri » Știința datelor (Data Science) » Matrice în Python – Pachete – NumPy ndarray

Matrice în Python – Pachete – NumPy ndarray

Există mai mulți candidați în limbajul Python pentru a reprezenta tipul de structură de matrice pe care l-am introdus în capitolul 7. Unul este lista Python simplă veche, pe care este posibil să o fi folosit dacă ați urmat un curs de informatică în Python. Se pare că listele vor fi prea lente pentru noi odată ce începem să ne ocupăm de o mulțime de date, plus că există o mulțime de lucruri pe care nu le va face automat pentru noi și care sunt la îndemână. O altă opțiune este Pandas Series pe care o vom prezenta în capitolul 11 – în mod ciudat, se dovedește că face prea multe, mai degrabă decât prea puțin, pentru scopurile noastre de aici. Un mediu fericit este ndarray din pachetul NumPy (1). Înainte de a face asta, totuși, trebuie să învățăm ce este de fapt un „pachet” și cum să folosim unul.

Pachete

Pe vremea mea (în jurul anilor 1990), când cineva dorea să scrie un program de calculator, scria singur totul, rând cu rând. Tot ce trebuia să faceți – de la ceva complex cum ar fi realizarea unei conexiuni la rețea de la distanță până la ceva simplu, cum ar fi calcularea mediei unor numere – depindea de dvs. să construiți. Partajarea codului pe internet pur și simplu nu era un lucru prea mare.

Astăzi, este exact invers. Când scrieți un program complex de analiză a datelor, cea mai mare parte a codului va fi scrisă de către alții, dacă o faceți corect. Acest lucru se datorează faptului că mulți, mulți oameni inteligenți de pe tot globul au scris fragmente de cod pentru a face toate lucrurile obișnuite (și unele mai puțin obișnuite) pe care ați dori să le faceți, iar treaba dvs. este să le uniți pe toate. Cu alte cuvinte: vi se oferă cea mai mare parte din Legos® – și chiar și o mulțime de bucăți pre-asamblate făcute cu zeci de Legos® fiecare – și sarcina dvs. este să vă construiți capodopera din acele blocuri de construcție.

În Python, un pachet este un depozit de funcții și metode utile pe care altcineva le-a scris. Importând un pachet în programul dvs., vă puneți la dispoziție toate acele lucruri utile. Propriul cod poate apela acele funcții/metode ori de câte ori credeți de cuviință. Este un mod modular, organizat și elegant de a face lucrurile, pe lângă faptul că economisește o mulțime de timp.

Primul pachet pe care îl vom folosi se numește NumPy, care înseamnă „Python numeric”. Pentru a-l importa, ar trebui să includeți exact această linie de cod în prima celulă de cod a editorului dvs.:

   import numpy as np

Rețineți că este scris cu litere mici. Odată ce acea celulă a fost executată, acum aveți acces la toate „lucrurile” NumPy, care face obiectul acestui capitol.

NumPy ndarray

Tipul de date pe care îl oferă pachetul NumPy se numește ndarray, care înseamnă „matrice n-dimensională”. Dacă sună amețitor, așa este, deși în acest curs vom folosi doar o matrice unidimensională, care este foarte simplu de înțeles. De fapt, arată exact ca exemplele din Figura 7.1.

MatriceFigura 7.1: Două matrice.

„Unidimensional” înseamnă doar că există un singur număr index, iar elementele sunt toate într-o linie. (2)

Crearea ndarrays

Există multe moduri diferite de a crea un ndarray. Vom învăța patru dintre ele.

Calea 1: np.array([])

Prima este să folosiți funcția array() a pachetului NumPy și să îi dați toate valorile în mod explicit. Iată codul pentru a reproduce exemplele din figura 7.1:

   followees = np.array([‘@katyperry’,’@rihanna’,’@TheEllenShow’])
balances = np.array([1526.73, 98774.91, 1000000, 4963.12, 123.19])

Este simplu, dar nu ratați problema sintactică: trebuie să includeți o pereche de paranteze drepte în interiorul parantezelor rotunde. De ce? Motive. (3) Deocamdată, memorați doar că pentru această funcție – și numai pentru această funcție – folosim „([…lucruri…])” în loc de „(…lucruri…)” când o apelăm.

Apropo, cititorul atent s-ar putea opune să numim array() o funcție, în loc de o metodă. Nu există un cuvânt și un punct înaintea acestuia și nu este o „chestie de metodă?” Este inteligent să crezi asta, dar de fapt nu, iar motivul este că „np” nu este numele unei variabile, ci numele unui pachet. Când spunem „np.array()”, ceea ce spunem este: „Python, apelează funcția array() din pachetul np”. Sintaxa cuvânt-și-punct are o dublă sarcină.

Putem apela funcția type(), așa cum am mai făcut pentru a verifica că da, într-adevăr, am creat ndarrays:

   print(type(followees))
print(type(balances))

▌ numpy.ndarray
▌ numpy.ndarray

Acest lucru este util, dar uneori vrem să știm din ce tip de date atomice este compusă matricea. Pentru a face asta, atașăm „.dtype” (în mod confuz, de data aceasta fără paranteze drepte) la sfârșitul numelui variabilei. „.dtype” înseamnă „tip de date”. Iată:

   print(followees.dtype)
print(balances.dtype)

▌ dtype(‘<U13’)
▌ type(‘float64’)

Ce înseamnă chestia asta? Este puțin mai dificil, dar permiteți-mi să vă explic. Tipul de date subiacent al urmăritorilor este (în mod bizar) „<U13”, care în înseamnă „șiruri de caractere Unicode (4), fiecare dintre ele având 13 caractere sau mai puțin”. (Dacă vă obosiți să numărați, veți descoperi că cel mai lung șir din matricea noastră de urmăritori este ultimul , „@TheEllenShow”, care are exact 13 caractere.) Lucrul „float64” înseamnă „flotante, fiecare dintre ele fiind reprezentat cu 64 de biți (5) în memorie”.

Nu trebuie să vă faceți griji pentru niciunul dintre aceste detalii. Tot ce trebuie să știți este: dacă dtype al unei matrice are „<U” în el, atunci este compus din șiruri; iar dacă are cuvântul „int” sau „float”, aceasta înseamnă unul dintre acei doi prieteni vechi din capitolul 3.

De altfel, vă veți aminti din capitolul 7 că o matrice este omogenă, ceea ce înseamnă că toate elementele sale sunt de același tip. NumPy impune acest lucru. Dacă încercați să le combinați:

   print(weird)
print(weird.dtype)
print(strange)
print(strange.dtype)

▌ [ 3. 4.9 8. ] ▌ dtype(‘float64′)
▌ [’18’ ‘73.0’ ‘bob’ ‘22.8’] ▌ dtype(‘<U4’)

Vezi cum s-au transformat int 3 și 8 din prima matrice în float 3. și 8.; între timp, toate elementele numerice ale celei de-a doua matrice au fost convertite în str. (Dacă vă gândiți bine, aceasta este singura direcție în care ar putea merge conversiile.)

Note

  • (1) Majoritatea oamenilor par să pronunțe acest „NUM-pie”, deși am auzit și „NUM-pee”.
  • (2) O arie bidimensională este un lucru cu aspect tabelar numit și matrice. Fiecare element are două numere de index: un rând și o coloană. O matrice tridimensională este un cub, cu trei numere de index necesare pentru a specifica un element. etc.
  • (3) Pentru cititorul experimentat, ceea ce facem de fapt aici este să creăm o listă Python simplă (cu paranteze) și apoi să apelăm funcția array() cu acea listă ca argument.
  • (4) Un „caracter Unicode” este doar un mod elegant de a spune „un caracter, care ar putea să nu fie obișnuit”. NumPy este capabil să stocheze mai mult decât doar a-b-c în șirurile sale; poate stoca simboluri din greacă, arabă, chineză etc.
  • (5) Un „bit” – care este prescurtarea pentru „cifră binară” – este cea mai mică informație pe care o poate stoca un computer: este un singur 0 sau 1.

Sursa: Stephen Davies, The Crystal Ball – Instruction Manual, Vol. 1: Introduction to Data Science, v. 1.1. Copyright © 2021 Stephen Davies. Licența CC BY-SA 4.0. Traducere și adaptare: Nicolae Sfetcu. © 2021 MultiMedia Publishing, Introducere în Știința Datelor, Volumul 1

Rețele de comunicații 5G
Rețele de comunicații 5G

Datorită impactului său așteptat în economie și societate, a cincea generație de telecomunicații mobile (5G) este una dintre cele mai importante inovații ale timpului nostru. Așteptările cresc cu capacitățile de bandă largă ale 5G, accesibile tuturor și peste tot, la … Citeşte mai mult

Nu a fost votat $2.99$6.88 Selectează opțiunile
Introducere în inteligența artificială
Introducere în inteligența artificială

Inteligența artificială s-a dezvoltat exploziv în ultimii ani, facilitând luarea deciziilor inteligente și automate în cadrul scenariilor de implementare. Inteligența artificială se referă la un ecosistem de modele și tehnologii pentru percepție, raționament, interacțiune și învățare.  Asistăm la o convergență … Citeşte mai mult

Nu a fost votat $2.99$5.24 Selectează opțiunile
Analitica rețelelor sociale
Analitica rețelelor sociale

Analitica rețelelor sociale este un domeniu nou și emergent, pregătit pentru a permite companiilor să își îmbunătățească inițiativele de gestionare a performanței în diferite funcții de afaceri. Indiferent dacă este vorba de măsurarea eficienței campaniilor promoționale, colectarea de informații despre … Citeşte mai mult

Nu a fost votat $3.99 Selectează opțiunile

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *