Numpy részkép kivágása és visszamásolása
A Numpy lehetőséget ad a mátrixok szeletelésére, vagyis indextartományokkal megadott részeinek elérésére. A szeletelés eredménye közvetlenül felhasználható, vagy új változóban eltárolható.
Fontos, hogy ez a részmátrix továbbra is az eredeti mátrixra hivatkozik, változtatása az eredetin is megjelenik! Ha tényleges másolatot szeretnék, akkor használjuk a copy() függvényt!
Az indextartományok megadásánál az adott dimenzióra vonatkozó kezdő és záró koordinátát kell megadni, kettősponttal elválasztva. Fontos! A záró koordináta érték már nem vesz részt a kivágásban! A következő példa egy 90x90 méretű eredményt ad.
cropped = image[82:172, 396:486]
cropped_copy = image[82:172, 396:486].copy()
Az intervallum megadásakor (a kettőspont előtt/után) a kezdő és/vagy a záró koordináta érték elhagyható. Ekkor az adott dimenzió szerinti minimális, illetve maximális koordináta értéket veszi a rendszer. Például az alábbi értékadással ki tudjuk nullázni a cropped mátrix minden elemét.
cropped[:, :, :] = 0
Jobbról balra haladva a teljes dimenziót felhasználó indexeket elhagyhatjuk, az első kivételével. Vagyis:
- A
cropped[:, :] = 0
ugyanezt csinálja. - A
cropped[:] = 0
is. - A
cropped[] = 0
szintaktikai hiba. - A
cropped = 0
pedig 0 skalár értéket adja a változónak, vagyis megszűnik a képmátrix!
Egy kisebb mátrixot be tudunk másolni egy nagyobba. A nagyobbnál indextartományokat kell megadni. (A kisebbnél is lehet.) A két (rész)mátrix méretnek meg kell egyeznie egymással! Ez a másolás ténylegesen megtörténik, ekkor nincs referencia szintű hivatkozás ugyanarra a területre, nincs szükség a copy() függvény hívására.
image[10:100, 20:110] = cropped