Python: cortar una matriz multidimensional

Soy nuevo en Python y entumecido. He descubierto cómo dividir una secuencia dimensional 1: arr[start:end] , y acceder a un elemento de la matriz: el = arr[row][col] .

Intentar algo como slice = arr[0:2][0:2] (donde arr es una matriz numpy) no me da las primeras 2 filas y columnas, pero repite las primeras 2 filas. ¿Qué acabo de hacer y cómo hago para cortar otra dimensión?

Si usas numpy , esto es fácil:

 slice = arr[:2,:2] 

o si quieres los 0’s,

 slice = arr[0:2,0:2] 

Obtendrás el mismo resultado.

* tenga en cuenta que slice es en realidad el nombre de un tipo incorporado. En general, aconsejaría darle a su objeto un “nombre” diferente.


Otra forma, si estás trabajando con listas de listas *:

 slice = [arr[i][0:2] for i in range(0,2)] 

(Tenga en cuenta que los 0 aquí no son necesarios: [arr[i][:2] for i in range(2)] también funcionaría).

Lo que hice aquí es que tomo cada fila deseada 1 a la vez ( arr[i] ). Luego, recorte las columnas que quiero de esa fila y las agrego a la lista que estoy creando.

Si lo intentas ingenuamente: arr[0:2] Obtienes las primeras 2 filas que si luego recortas de nuevo arr[0:2][0:2] , simplemente recortas las dos primeras filas nuevamente.

* Esto en realidad también funciona con muchos arreglos, pero será lento en comparación con la solución “nativa” que publiqué anteriormente.