NumPy: arreglos y cálculos rápidos en Python

De listas a operaciones vectorizadas

¿Qué problema tenemos?

Trabajar con listas puede ser lento y limitado.

Ejemplo con listas

lista = [1, 2, 3, 4]

nueva = []
for x in lista:
    nueva.append(x * 2)

print(nueva)

💡 Idea clave

Esto funciona…

pero no es eficiente.

NumPy al rescate

import numpy as np

Crear un array

arr = np.array([1, 2, 3, 4])

¿Qué es un array?

  • parecido a una lista
  • pero más rápido
  • pensado para números

Multiplicar todo fácilmente

arr = np.array([1, 2, 3, 4])
arr * 2

🔥 Esto es lo importante

No usamos for.

NumPy lo hace automáticamente.

Sumar arrays

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

a + b

Operaciones básicas

arr = np.array([1, 2, 3])

arr + 1
arr * 3
arr ** 2

Crear arrays rápidamente

np.zeros(5)
np.ones(5)
np.arange(0, 10)

Arreglos en 2D (tipo tabla)

matriz = np.array([
    [1, 2, 3],
    [4, 5, 6]
])

Acceder a elementos

matriz[0, 0]
matriz[1, 2]

Filtrar valores

arr = np.array([1, 2, 3, 4, 5])

arr[arr > 3]

💡 Esto es poderoso

Estamos filtrando sin usar ciclos.

Operaciones estadísticas

arr = np.array([1, 2, 3, 4, 5])

arr.mean()
arr.sum()
arr.max()

Ejemplo real

notas = np.array([3.5, 4.0, 2.8, 4.5])

notas.mean()

¿Por qué usar NumPy?

  • más rápido
  • menos código
  • más claro

Error común

Mezclar listas y arrays sin cuidado.

[1, 2, 3] * 2   # ❌ repite la lista
np.array([1, 2, 3]) * 2  # ✅ multiplica

Mini reto

Tienes:

datos = np.array([10, 20, 30, 40, 50])

Haz:

  • multiplicar todo por 3
  • quedarte solo con valores mayores a 60

Solución

import numpy as np

datos = np.array([10, 20, 30, 40, 50])

resultado = datos * 3
resultado = resultado[resultado > 60]

print(resultado)