Skills que aprenderás
Convocatorias
No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.
Recursos
No hay recursos disponibles todavía para esta convocatoria
Este curso está dirigido a profesionales y científicos de datos que ya dominan los fundamentos e intermedios de NumPy y necesitan llevar su dominio de la librería al nivel productivo y de alto rendimiento. A lo largo de ocho horas, el participante explorará las mecánicas internas de NumPy —gestión de memoria, vistas frente a copias, strides y acceso a disco con memmap— y aprenderá a diseñar soluciones vectorizadas, ufuncs personalizadas y pipelines de álgebra lineal numéricamente estables. Al finalizar, el participante será capaz de construir módulos reutilizables de análisis multidimensional, diagnosticar cuellos de botella de rendimiento con evidencia medible y garantizar la interoperabilidad sin fricciones con el ecosistema científico de Python, todo ello aplicado a datasets de escala real.
Al finalizar el curso, el participante será capaz de:
%timeit y demostrando una reducción de tiempo de ejecución de al menos 5×.SVD, QR, Cholesky) aplicadas a matrices mal condicionadas, seleccionando la más adecuada para cada contexto.Bloque 1 — Memoria, vistas y acceso eficiente a datos de gran escala
Se revisa en profundidad el modelo de memoria de NumPy: cómo se representan los arrays mediante buffers contiguos, qué son los strides y cómo determinan el acceso a cada elemento. El participante aprende a distinguir con precisión cuándo una operación genera una vista y cuándo produce una copia, y a elegir entre ambas estrategias en función del tamaño del dataset y la posibilidad de mutación no deseada. A continuación se introduce np.memmap como mecanismo para procesar ficheros de gran escala sin cargarlos completamente en RAM, definiendo umbrales de consumo de memoria y verificándolos durante la ejecución.
Bloque 2 — Vectorización avanzada y broadcasting multidimensional
El bloque parte de la vectorización como filosofía de diseño: se identifican los patrones de bucle más frecuentes y se reescriben como operaciones NumPy equivalentes, documentando la mejora con %timeit. Sobre esa base se aborda el broadcasting sobre tensores de tres o más dimensiones: reglas de compatibilidad de formas, técnicas de reshaping previo y documentación preventiva de casos conflictivos antes de ejecutar el código. El bloque culmina con el diseño e implementación de ufuncs personalizadas que extienden este modelo a operaciones elemento a elemento definidas por el usuario, garantizando compatibilidad nativa con broadcasting y midiendo su rendimiento frente a la solución en Python puro.
Bloque 3 — Estadística multidimensional y álgebra lineal numérica
Se construye un módulo de estadísticos descriptivos multidimensionales —media, desviación estándar, percentiles y curtosis— que opera sobre ejes arbitrarios y expone una interfaz configurable y reutilizable. Después, el participante trabaja con las principales descomposiciones matriciales de numpy.linalg: SVD, QR y Cholesky. Se analizan sus propiedades de estabilidad numérica frente a matrices mal condicionadas, se mide el error de reconstrucción y se establece un criterio de selección justificado según el contexto del problema.
Bloque 4 — Interoperabilidad con el ecosistema científico
El curso cierra integrando NumPy con el resto del ecosistema de Python para ciencia de datos. Se estudian los protocolos de conversión entre arrays de NumPy y las estructuras nativas de pandas, scikit-learn y PyTorch, haciendo especial énfasis en evitar copias innecesarias mediante el uso de __array__, DLPack y vistas compartidas. El participante implementa un flujo extremo a extremo que cruza al menos dos librerías, diagnostica los puntos de copia con herramientas de perfilado y aplica las conversiones óptimas para preservar la eficiencia obtenida en los bloques anteriores.
%timeit.np.memmap.np.linalg para operaciones básicas de álgebra lineal (producto matricial, inversión, normas).%timeit o cProfile e interpretar los resultados.