Operaciones con NumPy
Operaciones vectorizadas con NumPy
La fuerza de NumPy está en operar sobre arrays completos sin escribir bucles. Esto se llama vectorización: aplicas una operación y NumPy la ejecuta sobre cada elemento de forma optimizada. El resultado es código más corto, más rápido y más fácil de leer.
Aritmética elemento a elemento
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])
a + b # [11 22 33 44]
a * b # [10 40 90 160]
a ** 2 # [1 4 9 16]
# Con escalares se aplica a todos los elementos
a + 10 # [11 12 13 14]
a * 2 # [2 4 6 8]Funciones matemáticas y estadísticas
data = np.array([23, 45, 67, 12, 89, 34, 56])
np.mean(data) # promedio
np.median(data) # mediana
np.std(data) # desviación estándar
np.var(data) # varianza
np.min(data) # mínimo
np.max(data) # máximo
np.percentile(data, 75) # percentil 75
# Funciones aplicadas a cada elemento
arr = np.array([1, 4, 9, 16, 25])
np.sqrt(arr) # [1. 2. 3. 4. 5.]
np.log(arr) # logaritmo naturalOperaciones por eje
En una matriz, axis=0 recorre las filas (opera por columna) y axis=1 recorre las columnas (opera por fila).
matriz = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
np.sum(matriz, axis=0) # [12 15 18] -> suma por columna
np.sum(matriz, axis=1) # [6 15 24] -> suma por fila
np.mean(matriz, axis=0) # [4. 5. 6.]Broadcasting
NumPy expande automáticamente dimensiones compatibles para operar sin copiar datos manualmente.
matriz = np.array([[1, 2, 3],
[4, 5, 6]])
vector = np.array([10, 20, 30])
matriz + vector
# [[11 22 33]
# [14 25 36]]Atención
El broadcasting solo funciona si las dimensiones son compatibles (iguales o una de ellas vale 1). Si ves un error operands could not be broadcast together, revisa los shape de tus arrays.
En una matriz, ¿qué calcula np.sum(matriz, axis=0)?
axis=0 recorre las filas hacia abajo, por lo que el resultado es la suma de cada columna.Ejercicio práctico
Objetivo: usar la vectorización para calcular métricas reales.
- Crea un array con 10 temperaturas en grados Celsius.
- Conviértelas a Fahrenheit con una sola operación vectorizada (
C * 9/5 + 32). - Calcula media, mínimo, máximo y desviación estándar del array original.
- Crea una matriz 3x4 de ventas y obtén el total por columna (
axis=0) y por fila (axis=1).
Entregable: notebook con el array convertido, las estadísticas y los totales por eje.
Para recordar
- La vectorización aplica operaciones a todo el array sin bucles explícitos.
axis=0= por columna;axis=1= por fila.- El broadcasting combina arrays de distinto tamaño si sus dimensiones son compatibles.