Indeksi abil saab iga massiivi-sarnast objekti element-haaval lugeda/kirjutada.
Pythonis indekseerimine algab nullist. Massiivi pikkuse tagastab standardfunktsioon
len
, seega massiivi x
viimase elemendi indeks on
len(x)-1
. Samas indeks tohib olla ka negatiivne. Sel juhul loendamine
toimub massiivi lõpust ettepoole: viimase elemendi indeks on −1, eelviimasel
elemendil −2, jne. Näide:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
x[0] = 10
x[2] += 1
x[-1] = sqrt(x[-1])
Nende operatsioonide tulemina on järjendi sisu [10, 2, 4, 4, 5, 6, 7, 8, 3]
.
Tüüpiliselt massiivi-sarnased objektid toetavad ka viilutamist
(slicing) üldkujul
x[algus:lõpp:samm]
. See tagastab alam-massiivi indeksite vahemikus
algus
kuni lõpp
(välja arvatud) sammuga samm
. Vaikimisi samm on 1,
sel juhul elementide arv
uues massiivis on lõpp - algus
. On
kasulik ette kujutada, et indeksid
algus
ja lõpp
viitavad mitte otseselt massiivi elementidele,
vaid elementide vahekohtadele, nii et massiivi algust markeeriv indeks on 0 ja
massiivi lõpus len(x)
.
Kõik kolm parameetrit tohivad olla nii positiivsed kui ka negatiivsed ja need
võib valikuliselt ära jätta. Näiteks x[:3]
tagastab esimesed kolm
elementi, x[:]
tekitab koopia massiivist,
x[-2:]
tagastab viimased kaks elementi ning
x[::-1]
tekitab massiivi, kus
elementide järjestus on vastupidine.
NumPy lubab täiendavalt massiive indekseerida tõeväärtusmassiividega:
x = np.array((1, 2, 3))
I = [True, False, True]
y = x[I] # tulemus (1, 3)
Tõeväärtusmassiivid tekivad harilikult võrdlusoperatsioonide käigus. Näiteks
kõik positiivsed arvud saab massiivist välja filtreerida nii:
x = np.array((3, -6, 4, 7, -1))
y = x[x > 0] # tulemus (3, 4, 7)
ja kõik arvud vahemikus 0…5 nii:
x = np.array((3, -6, 4, 7, -1))
y = x[(x >= 0) & (x <= 5)] # tulemus (3, 4)
Sellist indekseerimist tohib kasutada ka massiivi elementide ülekirjutamiseks. Näiteks mõnikord on tarvis elimineerida kõik negatiivsed elemendid massiivis (nii, et massiivi algne pikkus säilib):
x[x < 0] = 0 # tulemus (3, 0, 4, 7, 0)