Los fundamentos de las matrices NumPy | Numpy Arrays - Guía 2021

Los fundamentos de los Numpy Arrays

La manipulación de datos en Python es casi sinónimo de la manipulación de matrices NumPy: incluso las herramientas más nuevas como Pandas se construyen alrededor de la matriz NumPy. Esta sección presentará varios ejemplos del uso de la manipulación de matrices NumPy para acceder a datos y submatrices, y para dividir, remodelar y unir matrices. Si bien los tipos de operaciones que se muestran aquí pueden parecer un poco áridos y pedantes, comprenden los componentes básicos de muchos otros ejemplos utilizados a lo largo del libro. ¡Conócelos bien!

La ciencia de datos como una profesión

Cubriremos algunas categorías de manipulaciones básicas de matrices aquí:

  • Atributos de las matrices: determinación del tamaño, la forma, el consumo de memoria y los tipos de datos de las matrices.
  • Indexación de matrices: obtención y configuración del valor de elementos de matriz individuales.
  • Corte de matrices: obtención y configuración de submatrices más pequeñas dentro de una matriz más grande.
  • Remodelación de matrices: Cambiar la forma de una matriz dada.
  • Unir y dividir matrices: combinar varias matrices en una y dividir una matriz en muchas.
Índice

    Atributos de matrices de NumPy

    Primero, analicemos algunos atributos útiles de la matriz. Comenzaremos definiendo tres matrices aleatorias, una matriz unidimensional, bidimensional y tridimensional. Usaremos el generador de números aleatorios de NumPy, que sembraremos con un valor establecido para garantizar que se generen las mismas matrices aleatorias cada vez que se ejecute este código.

    3c0LEQAAAAAElFTkSuQmCC

    Cada matriz tiene atributos ndim (el número de dimensiones), shape (el tamaño de cada dimensión) y size (el tamaño total de la matriz):

    Te puede interesar:  Cómo crear un keylogger usando Python

    wAAAABJRU5ErkJggg==

    Otros atributos incluyen itemize, que enumera el tamaño (en bytes) de cada elemento de la matriz, y nbytes, que enumera el tamaño total (en bytes) de la matriz:

    t0wBFodDPQAAAABJRU5ErkJggg==

    Indexación de matrices numpy: acceso a elementos individuales

    Si está familiarizado con la indexación de listas estándar de Python, la indexación en NumPy le resultará bastante familiar. En una matriz unidimensional, se puede acceder al i-ésimo valor (contando desde cero) especificando el índice deseado entre corchetes, al igual que con las listas de Python:

    AdZyFSrtj9owAAAAAElFTkSuQmCC

    Para indexar desde el final de la matriz, puede usar índices negativos:

    En una matriz multidimensional, se puede acceder a los elementos mediante una tupla de índices separados por comas:

    Los valores también se pueden modificar utilizando cualquiera de las notación de índice anterior:

    BjBTCMtJcDz09LEElbbCagTOW0nRXwQgAAEIAABCFhFAJFjVbpwFgIQgECDCFDhalAycCWNwP8BpEfOQbtJ9uIAAAAASUVORK5CYII=

    Slicing de matrices: acceso a submatrices

    Así como podemos usar corchetes para acceder a elementos individuales de la matriz, también podemos usarlos para acceder a submatrices con la notación de sector, marcada por el carácter de dos puntos (:). La sintaxis de corte de NumPy sigue la de la lista estándar de Python; para acceder a una porción de una matriz x, use esto:

    gfKb2WbJNbH1gAAAABJRU5ErkJggg==

    Si alguno de estos no está especificado, por defecto toman los valores start = 0, stop = size of dimension, step = 1. Veremos cómo acceder a submatrices en una dimensión y en múltiples dimensiones.

    Subarreglos unidimensionales

    Subarreglos multidimensionales

    Los sectores multidimensionales funcionan de la misma manera, con varios sectores separados por comas. Por ejemplo:

    Te puede interesar:  Introducción a APIs de datos

    vQAAAAASUVORK5CYII=

    Acceder a filas y columnas de matriz

    Una rutina comúnmente necesaria es acceder a filas o columnas individuales de una matriz. Esto se puede hacer combinando indexación y segmentación, utilizando una división vacía marcada con dos puntos (:):

    7vS+TaCOcgsAAAAASUVORK5CYII=

    Subarreglos como vistas sin copia

    Una cosa importante, y extremadamente útil, que debe saber sobre los segmentos de matriz es que devuelven vistas en lugar de copias de los datos de la matriz. Esta es un área en la que la división de matrices de NumPy difiere de la división de listas de Python: en las listas, las secciones serán copias. Considere nuestra matriz bidimensional de antes:

    Ahora, si modificamos este subarreglo, veremos que se cambia el arreglo original. Observar:

    Este comportamiento predeterminado es bastante útil: significa que cuando trabajamos con grandes conjuntos de datos, podemos acceder y procesar partes de estos conjuntos de datos sin la necesidad de copiar el búfer de datos subyacente.

    Creando copias de matrices numpy

    A pesar de las características agradables de las vistas de matriz, a veces es útil copiar explícitamente los datos dentro de una matriz o submatriz. Esto se puede hacer más fácilmente con el método copy ():

    B37P62vQwwfQAAAAAElFTkSuQmCC

    Si ahora modificamos este subarreglo, el arreglo original no se toca

    bk6AggggAACCOQs8P+w1fCW1O3RtQAAAABJRU5ErkJggg==

    Cambiando el tamaño de las matrices numpy

    Otro tipo útil de operación es la remodelación de matrices. La forma más flexible de hacer esto es con el método de remodelación. Por ejemplo, si desea colocar los números del 1 al 9 en una cuadrícula de 3 × 3, puede hacer lo siguiente:

    Te puede interesar:  Análisis estadístico descriptivo con Python / Anova, Pearson y Mapas de Calor

    Tenga en cuenta que para que esto funcione, el tamaño de la matriz inicial debe coincidir con el tamaño de la matriz reformada. Cuando sea posible, el método de remodelación utilizará una vista sin copia de la matriz inicial, pero con búferes de memoria no contiguos este no es siempre el caso.

    Otro patrón de remodelación común es la conversión de una matriz unidimensional en una matriz de fila o columna bidimensional. Esto se puede hacer con el método reshape o más fácilmente haciendo uso de la palabra clave newaxis dentro de una operación de slicing:

    H9IYwOs2sIpFQAAAABJRU5ErkJggg==

    Concatenación y separación de matrices numpy

    Todas las rutinas anteriores funcionaron en matrices únicas. También es posible combinar varias matrices en una y, a la inversa, dividir una sola matriz en varias matrices. Echaremos un vistazo a esas operaciones aquí.

    Concatenación de matrices numpy

    La concatenación o unión de dos matrices en NumPy se logra principalmente mediante las rutinas np.concatenate, np.vstack y np.hstack. np.concatenate toma una tupla o lista de matrices como su primer argumento, como podemos ver aquí:

    0+51R3QIfrKAAAAAElFTkSuQmCC

    Separación de matrices numpy

    Lo opuesto a la concatenación es la división, que se implementa mediante las funciones np.split, np.hsplit y np.vsplit. Para cada uno de estos, podemos pasar una lista de índices con los puntos de división:

    Q4AABEaQAAJoBI1GlyEAAQhAAAJdJ1D1DzsEUNdnEOMbIlD1QwVyCEBg9AjwvTB6NivbYwRQWYLcDwEIZBJgcclERAEIQKBmAv8PZmCAqiGVh+cAAAAASUVORK5CYII=

    Observe que N puntos de división conduce a N + 1 subarreglos. Las funciones relacionadas np.hsplit y np.vsplit son similares:

    De manera similar, np.dsplit dividirá las matrices a lo largo del tercer eje.

    Deja una respuesta

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

    Subir