NumPy Tutorials

NumPy: Dominando Operaciones Aritméticas y Broadcasting

Spread the love

NumPy es una biblioteca fundamental para el cálculo numérico en Python, que ofrece potentes herramientas para la manipulación eficiente de matrices. Este tutorial profundiza en dos conceptos fundamentales: las operaciones aritméticas y la difusión (broadcasting), esenciales para escribir código numérico conciso y de alto rendimiento.

Tabla de contenido

  1. Operaciones aritméticas
  2. Difusión (Broadcasting)

1. Operaciones aritméticas

NumPy extiende sin problemas los operadores aritméticos de Python (+, -, *, /, //, %, **) para operar directamente en matrices NumPy. Estas operaciones son elemento a elemento, lo que significa que se aplican a los elementos correspondientes en las matrices. Ilustrémoslo con ejemplos:


import numpy as np

arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

print("Suma:", arr1 + arr2)       # Salida: [ 6  8 10 12]
print("Resta:", arr1 - arr2)    # Salida: [-4 -4 -4 -4]
print("Multiplicación:", arr1 * arr2) # Salida: [ 5 12 21 32]
print("División:", arr1 / arr2)      # Salida: [0.2        0.33333333 0.42857143 0.5       ]
print("División entera:", arr1 // arr2) # Salida: [0 0 0 0]
print("Módulo:", arr1 % arr2)        # Salida: [1 2 3 4]
print("Exponenciación:", arr1 ** arr2) # Salida: [    1    64  2187 65536]

Esta operación elemento a elemento se extiende sin esfuerzo a matrices multidimensionales.

2. Difusión (Broadcasting)

La difusión (broadcasting) es una característica potente de NumPy que permite operaciones entre matrices de diferentes formas, bajo condiciones específicas. Elimina la necesidad de bucles explícitos, mejorando significativamente el rendimiento. Las reglas principales de la difusión son:

  1. Regla 1: Si las matrices tienen dimensiones desiguales, la forma de la matriz más pequeña se precede con unos líderes hasta que coincida con la dimensionalidad de la matriz más grande.
  2. Regla 2: Si una matriz tiene una dimensión de tamaño 1 y la otra matriz tiene una dimensión mayor que 1, la dimensión de tamaño 1 se estira para que coincida con la dimensión mayor.
  3. Regla 3: Si las matrices tienen dimensiones diferentes y ninguna tiene tamaño 1, se genera un ValueError.

Demostremos la difusión:


import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])

result = arr1 + arr2  # Difusión en acción

print(result)
# Salida:
# [[11 22 33]
# [14 25 36]]

Aquí, arr2 (forma (3,)) se difunde para que coincida con la forma de arr1 (2, 3). Cada fila de arr1 se suma a arr2, evitando bucles explícitos. Dominar la difusión es crucial para escribir código NumPy eficiente y legible. Siempre considere cuidadosamente las formas de las matrices para evitar resultados inesperados o errores.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *