Numpy
Índice
- Introducción a NumPy
- Instalación de NumPy
- Arrays en NumPy
- Creación de arrays
- Tipos de datos
- Operaciones básicas con arrays
- Indexación y segmentación
- Operaciones matemáticas
- Operaciones con matrices
- Operaciones avanzadas con arrays
- Broadcasting
- Manipulación de formas (reshaping)
- Concatenación y división de arrays
- Funciones universales (ufuncs)
- Funciones matemáticas
- Funciones estadísticas
- Álgebra lineal con NumPy
- Producto punto
- Descomposición de matrices
- Resolución de sistemas de ecuaciones
- Entrada y salida de datos
- Lectura y escritura de archivos
- Integración con otras bibliotecas
- Aplicaciones prácticas de NumPy
- Procesamiento de imágenes
- Análisis de datos
- Simulación y modelado
1. Introducción a NumPy
NumPy, que significa Numerical Python, es una biblioteca fundamental para la computación científica en Python. Proporciona soporte para arrays multidimensionales y matrices, junto con una colección de funciones matemáticas de alto nivel para operar con estos arrays. NumPy es especialmente útil en áreas como la matemática, física, ingeniería, análisis de datos y aprendizaje automático.
2. Instalación de NumPy
Para instalar NumPy, puedes usar pip, que es el gestor de paquetes de Python. Abre tu terminal o línea de comandos y escribe:
pip install numpy
Para confirmar que NumPy se ha instalado correctamente, puedes importar la biblioteca en una sesión de Python:
import numpy as np
print(np.__version__)
3. Arrays en NumPy
Creación de arrays
Un array en NumPy es una estructura de datos que almacena elementos del mismo tipo. Los arrays pueden ser unidimensionales, bidimensionales o multidimensionales. Aquí algunos ejemplos de cómo crear arrays:
import numpy as np
# Array unidimensional
array_1d = np.array([1, 2, 3, 4, 5])
# Array bidimensional
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
# Array tridimensional
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
Tipos de datos
NumPy permite especificar el tipo de datos de los elementos del array:
array_float = np.array([1.0, 2.0, 3.0], dtype=np.float32)
array_int = np.array([1, 2, 3], dtype=np.int32)
4. Operaciones básicas con arrays
Indexación y segmentación
Puedes acceder y modificar elementos individuales de un array utilizando índices:
array = np.array([1, 2, 3, 4, 5])
print(array[0]) # Output: 1
# Segmentación
print(array[1:4]) # Output: [2 3 4]
Operaciones matemáticas
NumPy permite realizar operaciones matemáticas directamente sobre los arrays:
array = np.array([1, 2, 3])
print(array + 1) # Output: [2 3 4]
print(array * 2) # Output: [2 4 6]
Operaciones con matrices
NumPy también soporta operaciones de álgebra lineal como la multiplicación de matrices:
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
print(np.dot(matrix_a, matrix_b)) # Producto de matrices
5. Operaciones avanzadas con arrays
Broadcasting
El broadcasting es una poderosa funcionalidad que permite realizar operaciones en arrays de diferentes tamaños:
array_a = np.array([1, 2, 3])
array_b = np.array([[1], [2], [3]])
print(array_a + array_b)
Manipulación de formas (reshaping)
Puedes cambiar la forma de un array sin cambiar sus datos:
array = np.array([1, 2, 3, 4, 5, 6])
reshaped_array = array.reshape((2, 3))
Concatenación y división de arrays
NumPy proporciona funciones para concatenar y dividir arrays:
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
concatenated = np.concatenate((array_a, array_b))
# División
array = np.array([1, 2, 3, 4, 5, 6])
split_array = np.split(array, 3)
6. Funciones universales (ufuncs)
Funciones matemáticas
NumPy incluye una amplia gama de funciones matemáticas:
array = np.array([1, 2, 3, 4])
print(np.sqrt(array)) # Raíz cuadrada
print(np.exp(array)) # Exponencial
Funciones estadísticas
Puedes calcular estadísticas descriptivas fácilmente:
array = np.array([1, 2, 3, 4, 5])
print(np.mean(array)) # Media
print(np.std(array)) # Desviación estándar
7. Álgebra lineal con NumPy
Producto punto
El producto punto es una operación fundamental en álgebra lineal:
vector_a = np.array([1, 2])
vector_b = np.array([3, 4])
print(np.dot(vector_a, vector_b)) # Output: 11
Descomposición de matrices
NumPy permite realizar varias descomposiciones de matrices:
matrix = np.array([[1, 2], [3, 4]])
u, s, vh = np.linalg.svd(matrix) # Descomposición en valores singulares
Resolución de sistemas de ecuaciones
Puedes resolver sistemas de ecuaciones lineales:
a = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(a, b)
8. Entrada y salida de datos
Lectura y escritura de archivos
NumPy facilita la lectura y escritura de datos:
# Guardar array en un archivo
np.save('array.npy', array)
# Cargar array desde un archivo
array_loaded = np.load('array.npy')
Integración con otras bibliotecas
NumPy se integra bien con otras bibliotecas científicas como Pandas, Matplotlib y SciPy:
import pandas as pd
# Convertir un DataFrame de Pandas a un array de NumPy
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
array_from_df = df.to_numpy()
9. Aplicaciones prácticas de NumPy
Procesamiento de imágenes
NumPy se usa comúnmente para el procesamiento de imágenes, donde cada imagen se puede representar como un array:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# Cargar una imagen como un array
img = mpimg.imread('image.png')
plt.imshow(img)
plt.show()
Análisis de datos
NumPy se utiliza ampliamente en el análisis de datos, especialmente cuando se maneja grandes conjuntos de datos numéricos:
data = np.random.rand(1000, 5) # Datos aleatorios
mean_data = np.mean(data, axis=0) # Media de cada columna
Simulación y modelado
NumPy es ideal para realizar simulaciones numéricas y modelado matemático:
# Simulación de Monte Carlo para estimar el valor de Pi
n_samples = 100000
samples = np.random.rand(n_samples, 2)
inside_circle = np.sum(np.square(samples).sum(axis=1) < 1)
pi_estimate = (inside_circle / n_samples) * 4
print(pi_estimate)
En conclusión, NumPy es una herramienta esencial para cualquier persona que trabaje con datos numéricos en Python. Ofrece una variedad de funciones y características que facilitan la manipulación y análisis de datos de manera eficiente. Con su amplia gama de aplicaciones, NumPy es una biblioteca fundamental en la caja de herramientas de cualquier científico de datos o ingeniero.