Acum că știm mai multe opțiuni pentru cum să creăm matrice n-dimensionale, ce putem face cu ele? Multe și diverse lucruri.
Obținerea dimensiunii matricei
Pentru a afla cât de lungă este o matrice (adică, câte elemente) folosim funcția len(), cam așa cum am făcut pentru șiruri. Referiți-vă la Figura 8.3 și luați în considerare acest cod:
num_players = len(roster) sam_len = len(roster[2]) big_number = len(photo_likes) print(„There are {} players on the USWNT.”.format(num_players)) print(„Sam Mewis has {} characters in her name.”.format(sam_len)) print(big_number) print(„We’ve had {} elections.”.format(len(prez_elections))) |
There are 24 players on the USWNT. Sam Mewis has 9 characters in her name. 40000000000 We’ve had 59 elections. |
Acesta este un exemplu de supraîncărcare a numelor de funcții Python, ceea ce înseamnă doar că același nume este folosit pentru două funcții diferite. Când treceți un șir la len(), obțineți numărul de caractere; dar când treceți o matrice la len(), obțineți numărul de elemente pe care le are. (Matricea de liste avea mai mult de 24 de litere, observați – dar len() a returnat 24, deoarece acesta era numărul de șiruri.)
Accesarea elementelor individuale
Extragerea unui element
Pentru a obține valoarea unui anumit element dintr-o matrice, folosim „notația boxie” cu numărul de index:
print(prez_elections[0]) third_year = usa_years[2] print(„{} was the 3rd year of U.S.A.”.format(third_year)) print(„The highest-numbered player is {}”.format( roster[len(roster)-1])) |
▌ 1788.0
▌ 1778 was the 3rd year of U.S.A.
▌ The highest-numbered player is Christen Press.
Amintiți-vă, indicii încep de la zero (nu unu), așa că de aceea prima linie are un 0 în ea.
Acum examinează ultima linie, care este cam complicată. Ori de câte ori aveți boxie, trebuie mai întâi să evaluați codul din interiorul lor pentru a obține un număr. Acest număr este atunci numărul de index pe care Python îl va căuta în matrice. În ultima linie de mai sus, codul din interiorul boxie este:
…len(roster)-1…
Defalcând, știm că len(roster) este 24, ceea ce înseamnă că len(roster)-1 trebuie să fie 23, deci [len(roster)-1] este Christen Press. Este un model comun pentru a obține ultimul element al unui tablou.*
Pentru a vă testa înțelegerea, aflați ce se va imprima pentru următorul cod:
q = 2 r = np.array([45,17,39,99]) s = 1 print(r[q-s+1]+3) |
Răspunsul este la sfârșitul capitolului.
Modificarea unui element
Pentru a modifica un element al unui tablou, trebuie doar să utilizați semnul egal, așa cum facem pentru variabile:
stooges = np.array([‘Larry’,’Beavis’,’Moe’]) print(stooges) stooges[1] = ‘Curly’ print(stooges) |
▌ [‘Larry’ ‘Beavis’ ‘Moe’] ▌ [‘Larry’ ‘Curly’ ‘Moe’]
La urma urmei, un element individual precum stooges[1] este în sine o variabilă aproape ca oricare alta.
Fragmente
Uneori, în loc să obținem doar un element dintr-o matrice, vrem să obținem o bucată întreagă din ele odată. Ne interesează primele zece elemente, să zicem, sau ultimele douăzeci, sau cele paisprezece elemente care încep cu indicele 100. Pentru a face acest gen de lucruri, folosim un slice.
Să presupunem că avem o listă de state în ordine alfabetică și am vrut să scoatem o bucată de intrări consecutive din mijloc – să zicem, de la Arizona la Colorado. Luați în considerare acest cod:
states = np.array([„AL”,”AK”,”AZ”,”AR”,”CA”,”CO”,”CT”, „DE”,”FL”,”GA”,”HI”]) print(states[2:6]) |
▌ [‘AZ’ ‘AR’ ‘CA’ ‘CO’]
„2:6” din boxie îi spune lui Python că vrem un fragment cu elementele de la 2 la 5 (nu la 6, așa cum v-ați aștepta). Acesta este același comportament pe care l-am văzut pentru np.arange() unde intervalul merge până la ultima valoare, dar fără a include. Doar obișnuiește-te cu asta.
De asemenea, putem omite numărul de dinainte de două puncte, care îi spune lui Python să înceapă de la începutul matricei:
print(states[:5]) |
▌ [‘AL’ ‘AK’ ‘AZ’ ‘AR’ ‘CA’]
sau omiteți numărul de după două puncte, care spune să mergeți până la sfârșit:
print(states[8:]) |
▌ [‘FL’ ‘GA’ ‘HI’]
Putem include chiar și un al doilea simbol două puncte, după care un al treilea număr specifică dimensiunea pasului sau lungimea pasului. Ia în considerare:
print(states[2:9:3]) |
▌ [‘AZ’ ‘CO’ ‘FL’]
Aceasta îi spune lui Python: „începeți fragmentul de la elementul #2 și mergeți până la (dar fără să includă) elementul #9, din trei în trei”. Dacă numărați statele manual, veți vedea că Arizona este la indicele 2, Colorado este la indicele 5 și Florida este la indicele 8. Prin urmare, acestea sunt cele trei elemente incluse în fragment.
Acest lucru poate părea ezoteric, dar apare surprinzător de des.
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
Lasă un răspuns