Comprendiendo los Tipos de Datos de NumPy

NumPyBeginner
Practicar Ahora

Introducción

Este laboratorio proporciona una guía paso a paso para comprender y gestionar los diversos tipos de datos en NumPy. NumPy (Numerical Python) es una potente biblioteca que ofrece soporte para arrays y matrices grandes y multidimensionales, junto con una colección de funciones matemáticas para operar eficientemente sobre estos arrays. A diferencia de las listas integradas de Python, los arrays de NumPy son más eficientes en el uso de memoria y más rápidos para cálculos numéricos.

Aprenderá a verificar, especificar y convertir los tipos de datos de los arrays de NumPy. Comprender los tipos de datos es crucial porque afectan tanto al uso de memoria como al rendimiento computacional. Toda la codificación se realizará en el archivo main.py utilizando el editor de código, y ejecutará el script desde la terminal. Este enfoque práctico le ayudará a asimilar estos conceptos fundamentales, que son cruciales para la computación numérica y el análisis de datos.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 99%. Ha recibido una tasa de reseñas positivas del 94% por parte de los estudiantes.

Verificando el Tipo de Dato de un Array

Cuando creas un array de NumPy, NumPy infiere automáticamente el tipo de datos más adecuado para sus elementos. Puedes comprobar fácilmente este tipo de datos inferido utilizando el atributo dtype del array.

El atributo dtype te indica qué tipo de datos contiene el array (como enteros, números de punto flotante, etc.) y cuánta memoria utiliza cada elemento. Esta información es importante para comprender cómo NumPy manejará las operaciones matemáticas en tus datos.

Primero, abre el archivo main.py desde el explorador de archivos de la izquierda. Añadiremos código para crear un array simple y luego imprimiremos su tipo de datos.

Añade el siguiente código a main.py:

## Create a NumPy array from a list of integers
## np.array() converts a Python list into a NumPy array
arr_int = np.array([1, 2, 3, 4, 5])

## Print the data type of the array
## .dtype shows the data type of array elements
print("Data type of arr_int:", arr_int.dtype)

Ahora, guarda el archivo y ejecútalo desde la terminal para ver la salida.

python main.py

Verás el tipo de datos del array impreso en la consola. El tipo de entero específico (como int64) depende de la arquitectura de tu sistema.

Data type of arr_int: int64

Esto confirma que NumPy identificó correctamente los elementos como enteros.

Especificando un Tipo de Dato al Crear

Si bien la inferencia automática de tipos de NumPy es útil, a menudo necesitas definir explícitamente el tipo de datos de un array para mayor eficiencia de memoria o para cumplir con los requisitos de un cálculo específico. Puedes hacer esto utilizando el argumento dtype durante la creación del array.

Los diferentes tipos de datos utilizan diferentes cantidades de memoria:

  • int32 utiliza 4 bytes por elemento
  • int64 utiliza 8 bytes por elemento
  • float32 utiliza 4 bytes por elemento
  • float64 utiliza 8 bytes por elemento

Para arrays grandes, elegir el tipo de datos correcto puede ahorrar una cantidad significativa de memoria y potencialmente mejorar el rendimiento.

Creemos un array y especifiquemos su tipo de datos como un flotante de 32 bits. Modifica tu archivo main.py con el siguiente código. Puedes comentar o eliminar el código del paso anterior.

## Create an array and specify the data type as float32
## The dtype parameter tells NumPy to store each number as a 32-bit float
arr_float = np.array([1.0, 2.5, 3.8], dtype=np.float32)

## Print the data type and the array
print("Data type of arr_float:", arr_float.dtype)
print("Array arr_float:", arr_float)

Guarda el archivo y ejecútalo de nuevo.

python main.py

La salida mostrará que el array se ha creado con el tipo de datos float32 que especificaste.

Data type of arr_float: float32
Array arr_float: [1.  2.5 3.8]

Puedes usar varias cadenas de tipos de datos u objetos de NumPy, como 'f4' para float32, 'i8' para int64, o np.bool_ para booleanos.

Convirtiendo el Tipo de Dato de un Array

Después de crear un array, es posible que necesites convertir su tipo de datos. El método .astype() se utiliza para este propósito. Este método no cambia el array original, sino que devuelve un nuevo array con el tipo de datos especificado.

La conversión de tipos es útil cuando necesitas:

  • Realizar operaciones que requieren un tipo de datos específico
  • Reducir el uso de memoria convirtiendo a tipos más pequeños
  • Preparar datos para funciones que esperan ciertos tipos

Creemos un array de enteros y luego lo convertiremos a un array de punto flotante. Actualiza tu archivo main.py con el siguiente código:

## Create an integer array
## np.arange(5) creates an array with numbers from 0 to 4 (5 elements total)
original_arr = np.arange(5)
print("Original array:", original_arr)
print("Original dtype:", original_arr.dtype)

## Convert the array to float64
## .astype() creates a new array with the specified data type
converted_arr = original_arr.astype(np.float64)
print("Converted array:", converted_arr)
print("Converted dtype:", converted_arr.dtype)

Guarda el archivo y ejecútalo.

python main.py

La salida demuestra que original_arr sigue siendo un array de enteros, mientras que converted_arr es un nuevo array con el tipo de datos float64.

Original array: [0 1 2 3 4]
Original dtype: int64
Converted array: [0. 1. 2. 3. 4.]
Converted dtype: float64

Esta es una forma segura de realizar conversiones de tipos sin perder tus datos originales.

Trabajando con Otros Tipos de Datos

NumPy soporta una amplia gama de tipos de datos más allá de solo enteros y flotantes, incluyendo booleanos y números complejos. Comprender cómo NumPy maneja estos puede ser muy útil.

Los arrays booleanos son particularmente útiles para:

  • Filtrar datos (seleccionar elementos que cumplen ciertas condiciones)
  • Operaciones lógicas
  • Enmascarar arrays

Por ejemplo, puedes crear un array de valores booleanos que representen condiciones Verdadero/Falso.

Creemos un array booleano. Actualiza tu archivo main.py:

## Create a boolean array
## np.bool_ is NumPy's boolean data type (stores True/False values)
arr_bool = np.array([True, False, True], dtype=np.bool_)

print("Boolean array:", arr_bool)
print("Boolean array dtype:", arr_bool.dtype)

Guarda y ejecuta el script.

python main.py

La salida mostrará el array booleano y su tipo de datos correspondiente.

Boolean array: [ True False  True]
Boolean array dtype: bool

También puedes verificar si un tipo de datos pertenece a una categoría general (como entero o de punto flotante) utilizando la función np.issubdtype(). Esto es útil para escribir funciones que puedan manejar múltiples tipos numéricos.

Resumen

En este laboratorio, has aprendido los fundamentos del trabajo con tipos de datos en NumPy. Ahora entiendes:

  • Qué son los arrays de NumPy y por qué son más eficientes que las listas de Python
  • Cómo crear arrays usando np.array() y np.arange()
  • Cómo verificar el tipo de datos de un array usando el atributo .dtype
  • Cómo especificar un tipo de datos durante la creación de un array con el parámetro dtype
  • Cómo convertir el tipo de datos de un array usando el método .astype()
  • Las implicaciones de memoria de los diferentes tipos de datos (int32, int64, float32, float64)
  • Cómo trabajar con arrays booleanos para filtrado y operaciones lógicas

Una comprensión sólida de los tipos de datos es esencial para escribir código numérico eficiente y preciso con NumPy. Elegir el tipo de datos correcto puede impactar significativamente tanto el uso de memoria como el rendimiento computacional en tus proyectos de análisis de datos.