Arrays de NumPy y broadcasting

Mapa conceptual
- Python para Datos
- Entorno
- pip
- venv
- Reproducibilidad
- Funcional
- Comprensiones
- Lambda
- map filter
- Calidad
- try except
- pytest
- Asserts
- NumPy
- Arrays
- Broadcasting
- Indexacion
- Pandas
- DataFrame
- Groupby
- Merge Join
- Entorno
¿Qué es un array?
Un array de NumPy es una cuadrícula de valores del mismo tipo, indexada por posiciones. A diferencia de una lista de Python, guarda los datos de forma contigua en memoria, lo que permite operaciones vectorizadas mucho más rápidas. Puede tener una, dos o más dimensiones.
Vectorización
Vectorizar es aplicar una operación a todos los elementos a la vez, sin escribir el bucle. Cuando sumas dos arrays con a + b, NumPy recorre los elementos internamente en código compilado. El resultado es el mismo que un bucle, pero órdenes de magnitud más rápido y mucho más legible.
Crear arrays
- np.array([1, 2, 3]) desde una lista; np.array([[1,2],[3,4]]) para una matriz.
- np.zeros(5), np.ones((2,3)), np.arange(0, 10, 2) generan estructuras al instante.
- np.linspace(0, 1, 11) reparte un rango en un número fijo de puntos, ideal para mallas.
dtype y forma
- dtype: el tipo de dato que guardan todas las casillas (float64, int64, bool). Homogéneo por diseño.
- shape: las dimensiones del array como tupla; (2, 3) significa 2 filas y 3 columnas.
- size: número total de elementos; ndim: cuántas dimensiones tiene.
| Atributo | Qué informa | Ejemplo para una matriz 2x3 |
|---|---|---|
| shape | dimensiones | (2, 3) |
| ndim | número de ejes | 2 |
| size | total de elementos | 6 |
| dtype | tipo homogéneo | float64 |
¿Qué ventaja principal ofrece vectorizar con NumPy frente a un bucle Python elemento a elemento?
Broadcasting: la idea
El broadcasting es la regla que permite operar arrays de formas distintas sin copiar datos. NumPy «extiende» virtualmente el array más pequeño alineando sus ejes con el mayor, de derecha a izquierda, para que las formas sean compatibles. No duplica memoria: repite el valor sobre la marcha.
Reglas de compatibilidad
- Se comparan las formas eje a eje empezando por la derecha.
- Dos ejes son compatibles si son iguales, o si uno de ellos vale 1.
- Un eje ausente (array con menos dimensiones) se trata como si valiera 1.
Ejemplo de broadcasting
Una matriz de forma (3, 4) y un vector de forma (4,) son compatibles: el vector se aplica a cada una de las tres filas. Una columna de forma (3, 1) se propaga a las cuatro columnas. Entender esto evita escribir bucles anidados para restar una media por columna, por ejemplo.
Broadcasting en la práctica
Estandarizar una matriz restando la media de cada columna y dividiendo por su desviación se resuelve en dos líneas gracias al broadcasting: las estadísticas por columna tienen la forma adecuada para propagarse sobre las filas. Es la operación detrás de innumerables preprocesamientos.
Errores frecuentes
- Forzar formas incompatibles y recibir un error de broadcast que no se sabe leer.
- Confundir una copia con una vista: modificar el resultado de un rebanado puede alterar el original.
- Guardar datos mixtos en un array y descubrir que NumPy los promueve todos a texto.
El broadcasting copia físicamente el array pequeño tantas veces como sea necesario para igualar formas.
Cuándo NO usar arrays
Si tus filas tienen longitudes distintas o estructuras heterogéneas, un array rectangular no es la herramienta: ahí suelen encajar mejor una lista de objetos o un DataFrame de Pandas. El array brilla cuando los datos son una tabla numérica regular.
Clasifica cada operación:
Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.
NumPy DocsReglas de broadcasting explicadas con diagramas.
Tienes una matriz de temperaturas de forma (7, 24) (una semana por horas) y quieres restar la media de cada hora. Explica con tus palabras qué forma debe tener el vector de medias para que el broadcasting funcione y por qué.
Tu texto se guarda sólo en este dispositivo.
Documentacion pandasGuia de referencia para manipulacion de datos en Python.
Comentarios
Inicia sesión para comentar.
Todavía no hay comentarios. Sé la primera persona en opinar.