in altre parole (per citare documentation) la sintassi slice di base è i: j: k dove i è l'indice iniziale, j è l'indice di arresto, e k è il passo (k> 0)
Ora se "i" non viene assegnato, il valore predefinito è 0 per k> 0 e n - 1 per k < 0. Se j non viene assegnato, il valore predefinito è n.
Questo è un array monodimensionale. Ora gli array bidimensionali sono una bestia diversa. La sintassi di slicing è un [rowrange, columnrange]
Quindi se si desidera tutte le righe, ma solo le ultime due colonne, come nel caso, si fa a [0: 3,1: 3].
Qui [0: 3] indica tutte le righe da 0 a 3. e [1: 3] significa tutte le colonne dalla colonna 1 alla colonna 3.
Ora, come ci si potrebbe chiedere, anche se hai solo 3 colonne e la numerazione inizia da 1, quindi tecnicamente questo comando deve restituire 3 colonne a destra. i.e colonna 1, colonna2, colonna 3. Questa è la parte difficile di questa sintassi. Devi iniziare a contare da DOPO il primo numero. Quindi quando dici [1: 3], in realtà stai dicendo dammi colonna 2 e colonna 3. Quali sono le ultime due colonne che vuoi.
Ora se non sai per quanto tempo è la tua matrice o se vuoi tutte le righe, puoi semplicemente lasciare quella parte vuota.
a [:, 1: 3] funzionerà anche.
Lo stesso vale anche per le colonne. vale a dire se si voleva dire, tutte le colonne, ma solo la prima fila, si può scrivere
a [0: 1 ,:]
Ora, come il sopra risposta [:, 1:] funziona è perché quando dici [1:] per colonne, significa darmi qualcosa DOPO la prima colonna e fino alla fine di tutte le colonne. Vuoto significa 'fino alla fine'.
Ormai è necessario rendersi conto che qualsiasi cosa su entrambi i lati della virgola è tutto un sottoinsieme del caso unidimensionale che ho menzionato prima. io.e se si desidera specificare le righe utilizzando formati passo è possibile scrivere un [:: 2,1]
che nel tuo caso tornerà array ([[2, 3], [5, 6]]
ie il comando chiarisce come: dammi tutte le righe, prendendo 2 alla volta. Inoltre dammi solo le ultime 2 colonne.
Questo mi ha richiesto un po 'di tempo per capire. Quindi incollalo qui, nel caso in cui aiuti qualcuno.
Come è il risultato dell'esempio nel tuo Q "1x2" ...? E come ha il _prima_ due colonne? Devo essere confuso ... –
@Alex: vedendo i risultati mi aspetto che intendesse le ultime due colonne :) E 1x2 ... beh. Ci sono 3 matrici di 2 elementi, puoi vederlo così;) Hai completamente ragione, +1 – Wolph
sì, penso che sia stato un refuso. risolto – mithunpaul