Skip to main content

Numpy

Índice

  1. Introducción a NumPy
  2. Instalación de NumPy
  3. Arrays en NumPy
    • Creación de arrays
    • Tipos de datos
  4. Operaciones básicas con arrays
    • Indexación y segmentación
    • Operaciones matemáticas
    • Operaciones con matrices
  5. Operaciones avanzadas con arrays
    • Broadcasting
    • Manipulación de formas (reshaping)
    • Concatenación y división de arrays
  6. Funciones universales (ufuncs)
    • Funciones matemáticas
    • Funciones estadísticas
  7. Álgebra lineal con NumPy
    • Producto punto
    • Descomposición de matrices
    • Resolución de sistemas de ecuaciones
  8. Entrada y salida de datos
    • Lectura y escritura de archivos
    • Integración con otras bibliotecas
  9. 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.