En este artículo, exploramos diversas técnicas de programación útiles en Python, centrándonos en ejemplos prácticos con biblioetcas comunes como numpy y matplotlib.
- Generación de números aleatorios con numpy
En Python 3, numpy ofrece métodos flexibles para generar números aleatorios. Por ejemplo, para obtener un valor aleatorio entre 0 y 1, se puede usar np.random.random(). Para crear una matriz con dimensiones específicas, como 2 filas y 3 columnas, se utiliza np.random.rand(2,3), donde los valores se distribuyen uniformemente en el rango [0, 1).
import numpy as np
# Valor aleatorio único
valor_aleatorio = np.random.random()
# Matriz aleatoria de 2x3
matriz_aleatoria = np.random.rand(2, 3)
print(valor_aleatorio)
print(matriz_aleatoria)
- Operaciones min y max en matrices
Al aplicar funciones como min o max a una matriz en numpy, el resultado es otra matriz. Para acceder a un valor escalar, es necesario indexar el elemento específico. Considere una matriz de ejemplo:
datos = np.array([[5, 15], [25, 35]])
min_segunda_columna = np.min(datos[:, 1])
print(min_segunda_columna) # Salida: 15
En este caso, datos[:, 1] selecciona la segunda columna, y np.min devuelve el valor mínimo de esa columna.
- Uso de la función map en Python 3
En Python 3, la función map devuelve un iterador en lugar de una lista. Para obtener los elementos como una lista, se debe envolver con list(). Ejemplo aplicado a una lista de números:
numeros = [10, 20, 30]
dobles = map(lambda n: n * 2, numeros)
lista_dobles = list(dobles)
print(lista_dobles) # Salida: [20, 40, 60]
- Conversión a listas con tolist()
El método tolist() en numpy permite convertir una matriz a una lista de listas, donde cada sublista representa una fila. Esto facilita la manipulación de datos en formtaos más nativos de Python:
matriz = np.array([[7, 8], [9, 10]])
lista_convertida = matriz.tolist()
print(lista_convertida) # Salida: [[7, 8], [9, 10]]
fila_especifica = lista_convertida[0]
print(fila_especifica) # Salida: [7, 8]
- Personalización de ejes con add_axes en matplotlib
En matplotlib, la función add_axes permite agregar regiones de ejes personalizadas a una figura. Los parámetros rect definen la posición y tamaño relativos al lienzo. Ejemplo con dos ejes superpuestos:
import matplotlib.pyplot as plt
fig = plt.figure()
# Primer eje en la esquina inferior izquierda
eje1 = fig.add_axes([0.1, 0.1, 0.4, 0.4])
eje1.plot([1, 2, 3, 4], [10, 20, 25, 30], 'g-')
eje1.set_xlabel('X')
eje1.set_ylabel('Y')
# Segundo eje superpuesto sin marcos
eje2 = fig.add_axes([0.5, 0.5, 0.3, 0.3], frameon=False)
eje2.plot([1, 2, 3, 4], [30, 25, 20, 10], 'm--')
eje2.set_title('Eje secundario')
plt.show()
Para eliminar las marcas de los ejes, se pueden usar diccionarios con listas vacías en los parámetros xticks y yticks al crear los ejes. Además, etiquetas únicas (label) son esenciales para identificar ejes en figuras complejas.
- Fórmula de distancia esférica
La distancia entre dos puntos en una esfera se calcula utilizando el teorema del coseno. La fórmula general es:
S = R · arccos[cosβ₁ cosβ₂ cos(α₁ - α₂) + sinβ₁ sinβ₂]
Donde:
- R es el radio de la esfera.
- β₁, β₂ son las latitudes de los puntos A y B.
- α₁, α₂ son las longitudes de los puntos A y B.
Esta ecuación permite calcular la distnacia angular mínima, crucial en aplicaciones como geodesia o navegación.