O dicho de otro modo (por citar documentation) la sintaxis básica rebanada es i: j: k, donde i es el índice de partida, j es el índice de parada, y k es el paso (k> 0)
Ahora, si 'i' no se da, por defecto es 0 para k> 0 y n - 1 para k < 0. Si no se da j, el valor predeterminado es n.
Eso es para una matriz unidimensional. Ahora las matrices bidimensionales son una bestia diferente. La sintaxis de corte es un [rango de filas, columnrange]
Por lo tanto, si desea todas las filas, pero solo las dos últimas, como en su caso, haga a [0: 3,1: 3].
Aquí [0: 3] significa que todas las filas de 0 a 3. y [1: 3] significa todas las columnas de la columna 1 a la columna 3.
Ahora, como usted puede preguntarse, a pesar de que sólo tiene 3 columnas y la numeración comienza desde 1, por lo que técnicamente este comando debe devolver 3 columnas a la derecha. es decir columna 1, columna 2, columna 3. Esa es la parte difícil de esta sintaxis. Tienes que comenzar a contar DESPUÉS del primer número. Entonces, cuando dices [1: 3], en realidad estás diciendo dame la columna 2 y la columna 3. Cuáles son las dos últimas columnas que deseas.
Ahora, si no sabe cuánto tiempo tiene su matriz o si desea todas las filas, puede dejar esa parte vacía. es decir
a [:, 1: 3] también funcionará.
Igual va para las columnas también. es decir, si quería decir, todas las columnas, pero sólo la primera fila, podría escribir
a [0: 1 ,:]
Ahora, ¿cómo lo anterior respuesta [:, 1:] funciona es porque cuando dices [1:] para las columnas, significa darme cualquier cosa DESPUÉS de la primera columna, y hasta el final de todas las columnas. es decir, vacío significa 'hasta el final'.
A estas alturas debe tener en cuenta que cualquier cosa en cualquier lado de la coma es todo un subconjunto del caso unidimensional que mencioné anteriormente. yo.E Si desea especificar sus filas usando tamaños de paso se puede escribir una [:: 2,1]
que en su caso volverá matriz ([[2, 3], [5, 6]])
es decir, el comando aclara como: dame todas las filas, tomando 2 a la vez. Además, dame solo las últimas 2 columnas.
Esto me tomó un tiempo para averiguar. Así que pegarlo aquí, en caso de que ayude a alguien.
¿Cómo es el resultado del ejemplo en su Q "1x2" ...? ¿Y cómo tiene las primeras dos columnas? Debo confundirme ... –
@Alex: al ver los resultados, creo que se refería a las dos últimas columnas :) Y 1x2 ... bueno. Hay 3 matrices de 2 elementos, puedes verlo así;) Sin embargo, estás en lo cierto, +1 – Wolph
, sí, creo que fue un error tipográfico. se corrigió – mithunpaul