Ce face Indexare și slicing
La un tablou 1D, indexarea și slicing-ul funcționează ca la liste: a[0] este primul element, a[-1] ultimul, a[1:4] elementele de la poziția 1 la 3, iar a[::-1] tabloul în ordine inversă.
La un tablou 2D dai rândul și coloana separate prin virgulă: a[1, 2] este elementul de pe rândul 1, coloana 2 (numărarea începe de la 0). Două puncte înseamnă „tot”: a[:, 0] este prima coloană, a[0, :] (sau a[0]) primul rând.
Slicing-ul dă o vedere, nu o copie: dacă modifici bucata, se modifică și tabloul inițial. Prin indexare poți și atribui valori: a[0, :] = 0.
Parametri
| Parametru | Descriere |
|---|---|
i, j |
Indici întregi. Negativii numără de la final. |
start:stop:pas |
Bucată: de la start (inclus) la stop (exclus), cu pas. Oricare poate lipsi. |
Ce returnează
Un element (scalar NumPy) pentru indici întregi pe toate axele, altfel o vedere a tabloului.
Exemple
Exemplul 1: Tablou 1D
import numpy as np
temperaturi = np.array([12, 15, 18, 21, 19, 14])
print(temperaturi[0], temperaturi[-1])
print(temperaturi[1:4])
print(temperaturi[::2])
print(temperaturi[::-1])
Rezultat
12 14
[15 18 21]
[12 18 19]
[14 19 21 18 15 12]
Exemplul 2: Tablou 2D: element, rând, coloană
Rândurile sunt magazinele (Iași, Cluj), coloanele lunile ianuarie-martie.
import numpy as np
vanzari = np.array([[120, 95, 130],
[80, 110, 105]])
print("Cluj, martie:", vanzari[1, 2])
print("Iași, toate lunile:", vanzari[0])
print("Ianuarie, ambele:", vanzari[:, 0])
print("Primele două luni:")
print(vanzari[:, :2])
Rezultat
Cluj, martie: 105
Iași, toate lunile: [120 95 130]
Ianuarie, ambele: [120 80]
Primele două luni:
[[120 95]
[ 80 110]]
Exemplul 3: Atribuire prin indexare
import numpy as np
note = np.zeros((2, 3), dtype=int)
note[0, 1] = 9
note[1, :] = 7
note[:, 2] = 10
print(note)
Rezultat
[[ 0 9 10]
[ 7 7 10]]
Greșeli frecvente
- Scrii
a[1][2]în loc dea[1, 2]. Merge, dar creează întâi un rând intermediar; la slicing (a[:][0]) rezultatul nu mai este coloana, ci primul rând. - Uiți că numărarea începe de la 0: al treilea rând este
a[2]. - Modifici o bucată obținută prin slicing crezând că e o copie. Folosește
a[1:3].copy()dacă vrei date separate.
Comenzi înrudite
Măști booleene: Selectează elementele care îndeplinesc o condiție, cu un tablou de True/False pus între paranteze pătrate.Indexare cu liste de indici: Selectează mai multe elemente, rânduri sau coloane deodată, dând o listă de poziții (fancy indexing).Copie și vedere (copy vs view): Explică diferența dintre o vedere (aceleași date) și o copie în NumPy și cum le recunoști cu .base și np.shares_memory.ndarray.shape: Află forma unui tablou (rânduri, coloane), numărul de dimensiuni și numărul total de elemente.