Casos de uso practicos
Filtrado con condiciones
import numpy as np
edades = np.array([15, 22, 35, 18, 45, 30, 17])
# Condicion booleana
mayores = edades >= 18
# [False True True True True True False]
# Filtrar usando la condicion
edades[mayores] # [22 35 18 45 30]
# En una linea
edades[edades >= 18] # [22 35 18 45 30]
# Condiciones multiples
edades[(edades >= 18) & (edades <= 35)] # [22 35 18 30]
Manipulacion de forma
# Reshape: cambiar dimensiones
arr = np.arange(12) # [0, 1, 2, ..., 11]
matriz = arr.reshape(3, 4)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# Flatten: aplanar a 1D
matriz.flatten() # [0, 1, 2, ..., 11]
# Transpose: transponer
matriz.T
# [[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
Combinando arrays
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# Concatenar
np.concatenate([a, b]) # [1 2 3 4 5 6]
# Stack vertical
np.vstack([a, b])
# [[1 2 3]
# [4 5 6]]
# Stack horizontal
np.hstack([a, b]) # [1 2 3 4 5 6]
Ejemplo: Normalizacion de datos
# Datos de ejemplo
datos = np.array([100, 200, 300, 150, 250])
# Normalizacion Min-Max (escala 0-1)
normalizado = (datos - datos.min()) / (datos.max() - datos.min())
# [0. 0.5 1. 0.25 0.75]
# Estandarizacion (media=0, std=1)
estandarizado = (datos - datos.mean()) / datos.std()
# [-1.26 -0.32 0.63 -0.79 0.16]
Generacion de datos para simulacion
np.random.seed(42) # Reproducibilidad
# Distribucion normal
alturas = np.random.normal(loc=170, scale=10, size=1000)
# Media: 170cm, Desv: 10cm, 1000 muestras
# Distribucion uniforme
precios = np.random.uniform(10, 100, size=500)
# Enteros aleatorios
dados = np.random.randint(1, 7, size=(100, 2))
# 100 lanzamientos de 2 dados