Numpy: Tipos de datos

Numpy: Tipos de datos

Tipos de Datos Primitivos

En el capítulo anterior de esta serie de tutoriales para aprender Numpy, aprendimos un concepto muy interesante que hace que numpy sea 50 veces más eficiente que las listas de Python: la homogeneización de datos.

Si no has leído el tutorial anterior, haz clic aquí.

  1. Entero:

    • Representación: Los enteros son números sin parte fraccionaria, es decir, números enteros sin decimales.
    • Ejemplo: 1, -5, 1000.
    • Uso Común: Se utiliza para representar cantidades enteras, como recuentos o índices.
  2. Flotante:

    • Representación: Los números de punto flotante incluyen una parte decimal y permiten representar números racionales o decimales.
    • Ejemplo: 3.14, -0.5, 2.0.
    • Uso Común: Se utiliza para representar cantidades que pueden tener una parte fraccionaria, como valores monetarios o resultados de cálculos matemáticos.
  3. Booleano:

    • Representación: Los valores booleanos representan verdad o falsedad. Solo pueden tener dos valores posibles: true o false.
    • Uso Común: Se utiliza para tomar decisiones en el código, controlar flujos de ejecución y evaluar condiciones.
  4. Cadena:

    • Representación: Las cadenas son secuencias de caracteres. Pueden contener letras, números, símbolos y espacios.
    • Ejemplo: “¡Hola, Mundo!”, ‘123’, “Texto de Ejemplo”.
    • Uso Común: Se utiliza para representar texto y manipular información basada en caracteres, como mensajes, nombres y cualquier tipo de información textual.

Datos Numéricos en Numpy

Podemos verificar rápidamente el tipo de datos que maneja nuestro array de Numpy. Para hacer esto, creemos un array e imprimamos su tipo (Ejemplo Numpy- 2.1).

import numpy as np

arr = np.array([2, 4, 6, 8, 10])
arr.dtype # Salida = dtype('int64')

¿Qué significa ‘int64’? El tipo de datos ‘int64’ en NumPy representa enteros con un tamaño de 64 bits, lo que significa que pueden almacenar enteros en el rango de -2^63 a 2^63-1. Este tipo de datos es útil cuando se trabaja con enteros grandes o cuando se asegura una precisión suficiente en cálculos que involucran enteros. Esto significa que el número máximo que se puede ingresar como dato en un array es 9,223,372,036,854,775,807.

Aunque el formato de 64 bits es casi predeterminado, también podemos definir el patrón de bits a usar en nuestro array (Ejemplo Numpy- 2.2 - 2.2.3).

#2.2
# Crear un array de enteros de 32 bits
arr_int32 = np.array([1, 2, 3], dtype=np.int32)
arr_int32.dtype

# 2.2.1
# Crear un array de enteros de 16 bits
arr_int16 = np.array([1, 2, 3], dtype=np.int16)
arr_int16.dtype

#2.2.3
# Crear un array de enteros de 8 bits
arr_int8 = np.array([1, 2, 3], dtype=np.int8)
arr_int8.dtype

El rango de valores que pueden representarse en patrones de 32, 16 y 8 bits sigue la fórmula general -2

  1. Enteros de 32 bits (int32): El número máximo representable es 2,147,483,647.

  2. Enteros de 16 bits (int16): El número máximo representable es 32,767.

  3. Enteros de 8 bits (int8): El número máximo representable es 127.

Números de Punto Flotante

Como era de esperar, los datos de punto flotante (float) también pueden definirse según el patrón de bits requerido. Un ejemplo de esto es el siguiente:

#2.3.1
# Punto flotante de 64 bits
arr_float64 = np.array([3.1, 2.2, 1.3], dtype=np.float64)
print(arr_float64.dtype) # Salida: float64

#2.3.2
# Punto flotante de 32 bits
arr_float32 = np.array([3.1, 2.2, 1.3], dtype=np.float32)
print(arr_float32.dtype) # Salida: float32

# 2.3.3
# Punto flotante de 16 bits
arr_float16 = np.array([3.1, 2.2, 1.3], dtype=np.float16)
print(arr_float16.dtype) # Salida: float16

El rango y la precisión de los números de punto flotante están determinados por el estándar IEEE-754. Aquí están los valores máximos representables para flotantes de 64, 32 y 16 bits, respectivamente:

  1. Punto Flotante de 64 bits (float64):

    • Precisión: Alrededor de 15 dígitos decimales significativos.
    • Valor máximo representable: 1.7976931348623157 x 10^308
  2. Punto Flotante de 32 bits (float32):

    • Precisión: Alrededor de 7 dígitos decimales significativos.
    • Valor máximo representable: 3.4028235 x 10^38
  3. Punto Flotante de 16 bits (float16):

    • Precisión: Alrededor de 3 dígitos decimales significativos.
    • Valor máximo representable: 6.55040 x 10^4

Datos Alfanuméricos en Numpy

Los datos alfanuméricos no son más que una cadena de caracteres, y pueden representarse en Numpy de las siguientes maneras:

  • ‘numpy.str_’ o ‘numpy.string_’

Este tipo de datos se utiliza para representar cadenas de caracteres en NumPy. Puedes especificar la longitud máxima de la cadena como parte del tipo de datos (por ejemplo, numpy.str_(10) para cadenas de hasta 10 caracteres).

(Ejemplo Numpy- 2.4)

# Cre

ar un array de cadenas de caracteres
arr_str = np.array(['Hola', 'Mundo'], dtype=np.str_)
  • Unicode de Numpy

Este tipo de datos se utiliza para representar cadenas Unicode en NumPy.

(Ejemplo Numpy- 2.4.1)

# Crear un array de cadenas Unicode
arr_unicode = np.array(['α', 'β', 'γ'], dtype=np.unicode_)

Revelando el Poder de los Tipos de Datos de NumPy para una Computación Científica Mejorada

Comprender los diversos tipos de datos en NumPy es crucial para aprovechar al máximo el poder de esta potente biblioteca en el ámbito de la computación numérica y científica. Desde enteros y números de punto flotante hasta cadenas de caracteres y datos alfanuméricos, NumPy proporciona una amplia variedad de tipos de datos que pueden adaptarse a diversas necesidades y escenarios.

Para profundizar en este fascinante campo, te invito a explorar más sobre los tipos de datos en NumPy y sus aplicaciones específicas. Puedes investigar cómo seleccionar el tipo de datos apropiado para optimizar el rendimiento de tus operaciones, manipular eficientemente arrays con tipos específicos y aprovechar las características avanzadas que NumPy ofrece en el manejo de datos.

Un entendimiento detallado de los tipos de datos en NumPy no solo mejorará tus habilidades en programación científica, sino que también te permitirá escribir código más eficiente y escalable. Sumérgete en una investigación más profunda sobre este tema y descubre las posibilidades que NumPy ofrece para tus proyectos.

Para una exploración exhaustiva de los tipos de datos de NumPy y ejemplos prácticos, sumérgete en nuestro repositorio dedicado. Encuentra fragmentos de código prácticos, explicaciones detalladas y libera todo el potencial de NumPy en tus esfuerzos de computación científica. ¡Explora el repositorio ahora!