Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Manipulación de datos con NumPy y Pandas, Unidad 2 — NumPy desde la práctica, 2.1 — Arrays NumPy ·

Dimensiones y shape

Dimensiones y shape: Comprendiendo las formas de los arrays NumPy

Introducción

En la manipulación de datos, NumPy es una herramienta fundamental para trabajar con estructuras numéricas. Los arrays (Ndarray en inglés) son una parte central de NumPy y forman el núcleo de muchas operaciones en ciencia de datos y machine learning. En esta unidad, profundizaremos en las dimensiones y el shape de los arrays NumPy. Aprender a controlar estas características es crucial para optimizar la eficiencia y el rendimiento del código.

Explicación principal

Los arrays NumPy son estructuras multidimensionales que pueden tener cualquier número de dimensiones, pero en práctica se usan principalmente hasta tres:

  • Unidimensional (1D): Similares a listas en Python.
  • Bidimensional (2D): Se asocian con tablas o matrices.
  • Tridimensional (3D): Útiles para trabajar con datos de volumen, como imágenes 3D.

La propiedad shape nos permite conocer la dimensión exacta del array. Es un tupla que indica el número de elementos en cada dimensión:

import numpy as np

# Crear un array bidimensional (2D)
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print("Shape del array 2D:", array_2d.shape)  # Output: (2, 3)

# Crear un array tridimensional (3D)
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("Shape del array 3D:", array_3d.shape)  # Output: (2, 2, 2)

Ejemplo práctico

Supongamos que estamos trabajando con datos de temperaturas en ciudades diferentes. Podemos representar este conjunto de datos como un array bidimensional:

import numpy as np

# Datos de temperatura en grados Celsius para varias ciudades
temperaturas = np.array([
    [25, 30, 28],
    [18, 22, 24]
])

print("Temperaturas:")
print(temperaturas)
print("\nShape del array:", temperaturas.shape)  # Output: (2, 3)

Errores típicos / trampas

  1. Mal uso de .reshape(): La función np.reshape() puede ser útil para cambiar la forma de un array, pero si intentamos reshapear a una dimensión no válida, NumPy lanzará un error.
    try:
        arr = np.array([1, 2, 3, 4])
        print(np.reshape(arr, (5,)))
    except ValueError as e:
        print(e)  # Output: total size of new array must be unchanged
  1. Confusión entre reshape() y resize(): Ambas funciones se parecen a primera vista, pero tienen propósitos diferentes. np.reshape() crea una nueva forma del mismo array, mientras que np.resize() cambia el tamaño del propio array.
  1. No entender la diferencia entre shape y size: Aunque ambos son atributos importantes de un array NumPy, shape devuelve las dimensiones en una tupla, mientras que size devuelve el número total de elementos en el array.

Checklist accionable

Para asegurar que entiendas completamente la forma y shape de los arrays NumPy:

  1. Crea arrays bidimensionales: Trata de crear un array con diferentes dimensiones (2D, 3D).
  2. Usa .shape para inspeccionar: Asegúrate de entender el output del shape en cada caso.
  3. Prueba reshape: Intenta cambiar la forma de un array y ve cómo se afectan las dimensiones.
  4. Revisa errores comunes: Haz ejemplos donde intentas reshapear a formas no válidas o confundas reshape() con resize().
  5. Usa .size sabiamente: Asegúrate de entender cuándo es útil y cuándo no.

Cierre: Siguientes pasos

Pasos siguientes en tu viaje

  1. Aprende a manipular arrays multidimensionales: Estudia cómo crear, inspeccionar y modificar arrays bidimensionales y tridimensionales.
  2. Optimiza tus operaciones: Comprueba si puedes aplicar operaciones vectorizadas más eficientemente utilizando las formas correctas de los arrays.
  3. Practica con datos reales: Trabaja en proyectos donde debas manipular y transformar datos reales usando NumPy.

Estos conceptos forman la base para manejar eficazmente grandes cantidades de datos, lo que es fundamental tanto en ciencia de datos como en machine learning. ¡Feliz codificación!

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).