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.
- Atributos de matrices de NumPy
- Indexación de matrices numpy: acceso a elementos individuales
- Slicing de matrices: acceso a submatrices
- Subarreglos unidimensionales
- Subarreglos multidimensionales
- Creando copias de matrices numpy
- Cambiando el tamaño de las matrices numpy
- Concatenación y separación de matrices numpy
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.
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):
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:
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:
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:
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:
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:
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 (:):
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 ():
Si ahora modificamos este subarreglo, el arreglo original no se toca
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:
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:
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í:
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:
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
Lo siento, debes estar conectado para publicar un comentario.