Python: notación de corte en matrices NumPy

    Introducción

    El término segmentar en programación generalmente se refiere a obtener una subcadena, subtupla o sublista de una cadena, tupla o lista, respectivamente.

    Python ofrece una variedad de formas sencillas de dividir no solo estos tres, sino cualquier iterable. Un iterable es, como su nombre indica, cualquier objeto sobre el que se pueda iterar.

    En este artículo, repasaremos todo lo que necesita saber sobre Slicing Numpy Arrays en Python.

    Rebanado de NumPy Array

    La forma más común de cortar una matriz NumPy es usando el : operador con la siguiente sintaxis:

    array[start:end]
    array[start:end:step]
    

    los start parámetro representa el índice inicial, end es el índice final, y step es el número de elementos sobre los que se «pasa».

    NumPy es un paquete gratuito de Python que ofrece, entre otras cosas, matrices n-dimensionales.

    Cortar matrices 1D (unidimensionales) en NumPy se puede hacer con la misma notación que cortar listas regulares en Python:

    import numpy as np
    arr = np.array([1,2,3,4])
    print(arr[1:3:2])
    print(arr[:3])
    print(arr[::2])
    

    Salida:

    [2]
    [1 2 3]
    [1 3]
    

    Rebanado de matriz 2D NumPy

    Una matriz 2D en NumPy es una matriz de matrices, una matriz 3D es una matriz de matrices de matrices y así sucesivamente. Una matriz 2D se puede representar como una matriz así:

    import numpy
    arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
    print(arr)
    

    Imprimamos esta matriz:

    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]]
    

    Cortar una matriz 2D puede dar como resultado una matriz o una matriz. La sintaxis que da como resultado una matriz sería:

    arr[startx:endx:stepx, starty:endy:stepy]
    

    La sintaxis que da como resultado una matriz:

    arr[startx:endx:stepx, const]
    arr[const, starty:endy:stepy]
    

    La utilización de esta sintaxis da como resultado una matriz cuyos elementos son las columnas en el rango de startx a endx en el eje x, y filas en el rango de starty a endy en el eje y de la matriz original:

    Echemos un vistazo a cómo podemos cortar esta matriz y en qué resulta el corte:

    import numpy
    
    arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
    print("The original matrix:")
    print(arr)
    
    print("A sliced submatrix:")
    print(arr[1:4,2:4])
    
    print("A sliced subarray:")
    print(arr[1,:])
    
    print("A sliced submatrix:")
    print(arr[:,3:])
    
    print("A sliced subarray:")
    print(arr[:,3])
    

    Este segmento de código se imprime:

    The original matrix:
    [[ 1  2  3  4]
     [ 5  6  7  8]
     [ 9 10 11 12]
     [13 14 15 16]]
    A sliced submatrix:
    [[ 7  8]
     [11 12]
     [15 16]]
    A sliced subarray:
    [5 6 7 8]
    A sliced submatrix:
    [[ 4]
     [ 8]
     [12]
     [16]]
    A sliced subarray:
    [ 4  8 12 16]
    

    Conclusión

    Cortar cualquier secuencia en Python es fácil, simple e intuitivo. La indexación negativa ofrece una manera fácil de adquirir los primeros o últimos elementos de una secuencia, o invertir su orden.

    En este artículo, hemos cubierto cómo cortar las matrices NumPy de Python.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *