11 - Copias 'shallow' y 'deep' en arreglos Numpy

Lección 11 del curso NumPy para Ciencia de Datos y Machine Learning.

Introducción

Cuando estamos haciendo la indexación y el slicing de arreglos de NumPy debemos ser cuidadosos porque en ocasiones el arreglo resultante sigue manteniendo “conexiones” con el arreglo original.

Lo anterior quiere decir que si modificamos el arreglo resultante, el arreglo original también será modificado, lo que se conoce como shallow copy (copia poco profunda).

Para evitar estos inconvenientes debemos realizar lo que se conoce como deep copy (o copia profunda) con lo cual podremos desacoplar un arreglo del otro.

En esta lección veremos en detalle en qué consisten estas copias shallow y deep.

Contenido exclusivo suscriptores

Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Copias shallow

Se refieren a que al momento de crear un arreglo derivado de un arreglo original la información estará compartida: si modificamos el arreglo resultante modificaremos también el arreglo original.

Copias deep

Casi nunca es conveniente mantener copias shallow en nuestro código, pues esto nos lleva a comportamientos inesperados y errores difíciles de detectar.

Lo más recomendable al hacer el slicing es generar una copia profunda (deep) que permite desacoplar un arreglo del otro: si modifico el arreglo resultante el arreglo original permanecerá intacto.

Lo anterior se logra usando el método copy() disponible en cualquier arreglo de NumPy.

Contenido exclusivo suscriptores

Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Conclusión

Muy bien, teniendo claros los conceptos de copias poco profundas (shallow) y copias profundas (deep) lo único que nos resta en esta tercera sección del curso es aprender a usar algunas funciones específicas que resultarán muy útiles para el pre-procesamiento de datos y para la implementación de modelos que desarrollaremos más adelante en nuestros proyectos de Ciencia de Datos y Machine Learning.

Entonces en la próxima lección veremos varias funciones avanzadas de NumPy útiles en este tipo de proyectos. En particular, hablaremos de la concatenación de arreglos y de las funciones whererandom.seed.

Ver todas las lecciones de este curso