Desvío estándar
Devolvé el desvío estándar del array. Pista: arr.std(). Ejemplo: desviacion(np.array([10, 10, 10])) → 0.0
Entrá y llevá tu progreso —ejercicios, medallas y Pokémon— a cualquier dispositivo. 🔄
Si tu cuenta ya tiene progreso guardado, se carga ese al entrar.
Entraste como . Tu progreso se sincroniza solo. 🔄
Devolvé el desvío estándar del array. Pista: arr.std(). Ejemplo: desviacion(np.array([10, 10, 10])) → 0.0
🎯 Meta: sacarle conclusiones a un array: promedios, máximos, contar cuántos cumplen algo. Es el corazón del análisis.
Ya sabés crear arrays. Ahora vamos a resumirlos: ¿cuál es el Pokémon más fuerte? ¿el promedio de niveles? ¿cuántos superan el nivel 50?
Una agregación toma todo el array y devuelve un solo número.
import numpy as np
niveles = np.array([25, 90, 12, 70, 50])
print("suma:", niveles.sum())
print("promedio:", niveles.mean())
print("máximo:", niveles.max())
print("mínimo:", niveles.min())
print("desvío:", niveles.std())
💡 mean (media/promedio), std (desvío estándar) y max/min son las estrellas del análisis: te dan una “foto” rápida de los datos.
En una tabla 2D podés agregar por columna (axis=0) o por fila (axis=1).
import numpy as np
# filas = Pokémon, columnas = [ataque, defensa, velocidad]
stats = np.array([[55, 40, 90],
[84, 78, 100]])
print(stats.sum(axis=0)) # total por columna -> [139 118 190]
print(stats.sum(axis=1)) # total por fila -> [185 262]
print(stats.mean(axis=0)) # promedio por columna
💡 Truco para no marearte: axis=0 “aplasta hacia abajo” (resume las filas → te queda una por columna). axis=1 “aplasta hacia el costado”.
P: `niveles = np.array([25, 90, 12, 70, 50])`. ¿Qué devuelve `niveles.mean()`?
- `90`
- `25`
+ `49.4`
> `.mean()` calcula el promedio: (25+90+12+70+50)/5 = 247/5 = 49.4.
Combinás máscaras con agregaciones para contar o medir.
import numpy as np
niveles = np.array([25, 90, 12, 70, 50])
print((niveles > 40).sum()) # cuántos superan 40 -> 3
print(niveles[niveles > 40].mean()) # promedio de los que superan 40
💡 (niveles > 40) da [False True False True True]. Sumar booleanos cuenta los True (porque True vale 1).
P: `niveles = np.array([25, 90, 12, 70, 50])`. ¿Qué devuelve `(niveles > 40).sum()`?
- `1`
- `2`
+ `3`
> `niveles > 40` da `[False True False True True]`. Sumar booleanos cuenta los `True`: hay 3 (90, 70 y 50).
np.where(condición, si_cumple, si_no) arma un array nuevo decidiendo valor por valor.
import numpy as np
hp = np.array([100, -5, 30, -20, 80])
sano = np.where(hp < 0, 0, hp) # los negativos pasan a 0
print(sano) # [100 0 30 0 80]
Una técnica clásica: escalar los valores al rango 0 a 1 para poder compararlos.
import numpy as np
niveles = np.array([10, 50, 100])
norm = (niveles - niveles.min()) / (niveles.max() - niveles.min())
print(norm) # [0. 0.444 1. ]
| Cosa | Para qué |
|---|---|
arr.sum()/mean()/max()/min()/std() | resumir todo el array en un número |
arr.sum(axis=0/1) | resumir por columna / por fila |
(arr > x).sum() | contar cuántos cumplen |
np.where(cond, a, b) | elegir valor según condición |
(x - min) / (max - min) | normalizar a 0..1 |
Practicá con los ejercicios de este tema. 💪
⚡ “Los números cuentan historias. Aprendé a escucharlos.”