Vectoren: Vectorrekening in Python
Selectie van componenten en toewijzing van waarden
Selectie van componenten en deelvectoren Je kunt op verschillende manieren componenten van vectoren selecteren. We geven een paar voorbeelden, waaruit blijkt dat indexering begint bij 0 en er slimme manieren zijn om deelvectoren te creëren.
>>> v = np.arange(6,11); v
array([ 6, 7, 8, 9, 10])
>>> v[1] # een enkel element (2e component)
7
>>> np.array((v[1], v[3])) # meerdere componenten
array([7, 9])
>>>> v[1:4] # een deelvector
array([7, 8, 9])
>>> v[1:] # alles behalve de eerste component
array([ 7, 8, 9, 10])
>>> v[:-1] # alles behalve de laatste component
array([6, 7, 8, 9])
>>> v[:,np.newaxis] # alles als kolomvector
array([[ 6],
[ 7],
[ 8],
[ 9],
[10]])
>>> v = v.reshape(np.size(v),1); v # alles als kolomvector
array([[ 6],
[ 7],
[ 8],
[ 9],
[10]])
Selectie via logische expressies Je kunt ook logische indexering (met true en false) gebruiken om componenenten van vectoren te selecteren. Hiervoor heb je relationele operatoren nodig, zoals uit onderstaande tabel. Behalve logische indexering kan je ook de where
instructie gebruiken om geschikte indices bij een logische uitdrukking op te sporen.
== | gelijk aan | != | niet gelijk aan |
< | kleiner dan | > | groter dan |
<= | kleiner dan of gelijk aan | >= | groter dan of gelijk aan |
>>> v = np.arange(5,11); print(v)
[ 5 6 7 8 9 10]
>>> # vectorwaarden true/false als aan de voorwaarde wel/niet voldaan is:
>>> lv = v>8; print(lv)
[False False False False True True]
>>> v[lv] # selectie van componenten
array([ 9, 10])
>>> i = np.where(v<8); i # selectie van indices via where commando
(array([0, 1, 2], dtype=int64),)
>>> v[i] # selectie van componenten
array([5, 6, 7])
Toewijzing Componenten waar je naar refereert kun je ook een waarde toewijzen.
>>> v = np.arange(5,11); v[1] = 4; v # eerste component gelijk gesteld aan 4 array([ 5, 4, 7, 8, 9, 10])
>>> v[:2] = 5; v # eerste 2 componenten gelijk gesteld aan 5 array([ 5, 5, 7, 8, 9, 10]) >> np.delete(v,1) # tweede component verwijderd array([ 5, 7, 8, 9, 10])
>>> v[:] = 1; v # alle componenten gelijk aan 1 gesteld array([1, 1, 1, 1, 1, 1])
Door toewijzing kan je niet de structuur wijzigen. In onderstaand voorbeeld geven we de vector een extra component via de append
functie, maar die doet dit niet inline, d.w.z verandert de structuur van de gebruikte vector niet (daarvoor is een toewijzing nodig). Dit is overigens niet een aanbevolen manier om te werken. Het vooraf reserveren van voldoende ruimte voor componenten in een vector via de zero constructie en dan pas de data vector vullen met waarden door toewijzing is een betere manier om gegevens te verzamelen in Python experimenten zoals de reactietijden op stimuli.
>>> v = np.arange(5, 8); v % vector van lengte 3
>>> v = np.append(v,8); v
array([5, 6, 7, 8])