Python NumPy en la práctica: el código y los comandos que realmente importan
Python NumPy : lo esencial en un artículo — código real, diagramas y pasos concretos, extractos de un curso de 35 lecciones.
Sin teoría interminable aquí: abrimos la terminal y practicamos. Aquí lo esencial de Python NumPy, extraído directamente de un curso completo de 35 lecciones — con código real que puedes copiar y pegar ahora.
- Introducción e Instalación
- Creación e inspección de arrays
- Indexación, slicing y fancy indexing
- Operaciones vectorizadas
- Broadcasting
Crear arrays
Objetivos pedagógicos
¿Por qué no siempre np.array()?
Podríamos escribir siempre np.array([0,0,0,0,0,0,0,0,0,0]). Pero imagina ahora que necesitas un array de 1 000 000 ceros: imposible teclearlo a mano.
Afortunadamente, NumPy ofrece fábricas especializadas para estos casos recurrentes. Son más rápidas, más legibles y más seguras que un bucle Python.
np.zeros : una tabla de ceros
La herramienta n.º 1 para inicializar un array. Se pasa como argumento la shape deseada:
import numpy as np # Vector de 5 ceros a = np.zeros(5) print(a) # [0. 0. 0. 0. 0.] # Matriz 3 x 4 de ceros b = np.zeros((3, 4)) print(b) # [[0. 0. 0. 0.] # [0. 0. 0. 0.] # [0. 0. 0. 0.]] # Cubo 2 x 3 x 4 (¡un tensor 3D!) c = np.zeros((2, 3, 4)) print(c.shape) # (2, 3, 4)
np.ones : una tabla de unos
Idéntico a zeros, pero lleno de 1. Muy útil como máscara o como punto de partida para matrices de pesos.
import numpy as np # Vector de pesos inicializados a 1 poids = np.ones(10) print(poids) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] # Matriz cuadrada 3 x 3 de unos M = np.ones((3, 3), dtype=int) print(M) # [[1 1 1] # [1 1 1] # [1 1 1]]
Observa el parámetro dtype=int: por defecto, zeros y ones producen float64. Si quieres enteros, solicítalo explícitamente.
np.full : rellenar con cualquier valor
Cuando quieras rellenar con un valor distinto de 0 o 1, usa np.full(shape, valor):
import numpy as np # Matriz 2x3 rellena de 7 sept = np.full((2, 3), 7) print(sept) # [[7 7 7] # [7 7 7]] # Tabla de NaN (valor faltante) nan_arr = np.full(5, np.nan) print(nan_arr) # [nan nan nan nan nan]
Caso práctico frecuente: inicializar una tabla de resultados a NaN y luego rellenar celda por celda durante un cálculo.
np.arange : la versión « range » de NumPy
np.arange(start, stop, step) es el equivalente NumPy de la función range de Python, pero devuelve un ndarray:
import numpy as np # 0, 1, 2, ..., 9 (stop está excluido) a = np.arange(10) print(a) # [0 1 2 3 4 5 6 7 8 9] # De 5 a 20 (excluido), con paso de 2 b = np.arange(5, 20, 2) print(b) # [ 5 7 9 11 13 15 17 19] # Con paso flotante: posible pero mejor evitarlo c = np.arange(0, 1, 0.1) print(c) # [0. 0.1 0.2 ... 0.9] (pero cuidado, ver warning)
np.linspace : N puntos regularmente espaciados
np.linspace(start, stop, num) devuelve num puntos regularmente espaciados entre start y stop, incluyendo ambos extremos:
import numpy as np # 11 puntos de 0 a 1 inclusive a = np.linspace(0, 1, 11) print(a) # [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ] # 5 puntos entre -pi y +pi (ideal para graficar sin/cos) x = np.linspace(-np.pi, np.pi, 5) print(x) # [-3.14 -1.57 0. 1.57 3.14] # 1000 puntos para un trazado suave t = np.linspace(0, 10, 1000)
linspace es imprescindible para trazar curvas matemáticas con Matplotlib. Es la herramienta n.º 1 para crear ejes continuos.
Indexación básica
Objetivos pedagógicos
Indexación 1D : como una lista Python
Para un array 1D, la indexación es idéntica a una lista Python. El primer elemento tiene el índice 0.
import numpy as np notes = np.array([12, 15, 17, 9, 18, 14]) print(notes[0]) # 12 (primera nota) print(notes[2]) # 17 (tercera nota) print(notes[5]) # 14 (última nota)
El tipo devuelto es un escalar NumPy, no un array. Puedes usarlo como un número Python normal.
Índices negativos : desde el final
Como en Python, -1 designa el último elemento, -2 el penúltimo, etc.
import numpy as np notes = np.array([12, 15, 17, 9, 18, 14]) print(notes[-1]) # 14 (última) print(notes[-2]) # 18 (penúltima) print(notes[-6]) # 12 (la primera, desde el final)
Indexación 2D : fila y columna
Para una matriz se necesitan dos índices: arr[i, j]. Es la convención de NumPy, mucho más clara que arr[i][j] de Python.
import numpy as np bulletin = np.array([ [14, 15, 12], # alumno 0 [18, 11, 17], # alumno 1 [9, 10, 8], # alumno 2 [16, 19, 14], # alumno 3 ]) # Nota del alumno 1 en la materia 2 (inglés) print(bulletin[1, 2]) # 17 # El alumno 3 en matemáticas (columna 0) print(bulletin[3, 0]) # 16
Extraer una fila completa
Con un solo índice se recupera toda la fila:
import numpy as np bulletin = np.array([ [14, 15, 12], [18, 11, 17], [9, 10, 8], [16, 19, 14], ]) eleve1 = bulletin[1] print(eleve1) # [18 11 17] print(eleve1.shape) # (3,) # Equivalente explícito con slice: print(bulletin[1, :]) # [18 11 17]
Ambas sintaxis bulletin[1] y bulletin[1, :] son equivalentes. La forma con : es más explícita: « fila 1, todas las columnas ».
Extraer una columna completa
Para la columna es OBLIGATORIO usar la sintaxis bidimensional:
import numpy as np bulletin = np.array([ [14, 15, 12], [18, 11, 17], [9, 10, 8], [16, 19, 14], ]) # Todas las notas de matemáticas (columna 0) math = bulletin[:, 0] print(math) # [14 18 9 16] # Media por materia print("Media math :", bulletin[:, 0].mean()) print("Media franc :", bulletin[:, 1].mean()) print("Media anglais :", bulletin[:, 2].mean())
Modificar un valor por asignación
La indexación también funciona en escritura. Puedes modificar un elemento, una fila completa o una columna:
import numpy as np bulletin = np.array([ [14, 15, 12], [18, 11, 17], [9, 10, 8], ]) # Modificar una sola celda bulletin[0, 1] = 16 print(bulletin[0]) # [14 16 12] # Reemplazar toda la fila 2 bulletin[2] = [11, 12, 13] print(bulletin) # [[14 16 12] # [18 11 17] # [11 12 13]] # Poner una columna entera a cero bulletin[:, 2] = 0 print(bulletin) # [[14 16 0] # [18 11 0] # [11 12 0]]
Instalar NumPy y el entorno
Objetivos pedagógicos
Verificar Python en tu máquina
NumPy requiere Python 3.9 o superior. Para comprobar tu versión, abre una terminal y escribe:
# Windows (PowerShell o cmd) python --version # macOS / Linux python3 --version # Salida esperada (ejemplo): # Python 3.12.4
Si Python no está instalado, descárgalo desde el sitio oficial python.org/downloads. En Windows, marca la casilla « Add Python to PATH » durante la instalación.
¿Por qué un entorno virtual?
Un entorno virtual es una carpeta aislada que contiene su propia copia de Python y sus propias bibliotecas. Permite tener un proyecto con NumPy 1.26 y otro con NumPy 2.0 sin que se interfieran.
Sin entorno virtual
Con entorno virtual
Método 1 : pip + venv (Python estándar)
Es el método oficial, ligero e integrado en Python. Crea una carpeta de proyecto y abre una terminal dentro:
# 1. Crear un entorno virtual llamado "venv" python -m venv venv # 2. Activar el entorno # Windows PowerShell : venv\Scripts\Activate.ps1 # macOS / Linux : source venv/bin/activate # 3. Instalar NumPy pip install numpy # 4. (Opcional) Instalar también Jupyter y matplotlib pip install jupyter matplotlib pillow
Una vez activado, tu prompt muestra (venv) delante. Es la señal de que estás trabajando en tu burbuja aislada.
Método 2 : Anaconda / Miniconda
Anaconda es una distribución científica de Python que ya trae instaladas las principales bibliotecas de ciencia de datos: NumPy, Pandas, scikit-learn, Jupyter, etc. Es muy práctico para principiantes.
# 1. Descargar Anaconda desde anaconda.com/download # 2. Ejecutar el instalador gráfico # 3. Una vez instalado, abrir el Anaconda Prompt # Verificar la versión de NumPy incluida conda list numpy # Crear un entorno dedicado al curso conda create -n cours-numpy python=3.12 numpy jupyter matplotlib pillow # Activar conda activate cours-numpy
Si solo quieres lo estrictamente necesario, elige Miniconda, una versión ligera (~50 MB) en lugar de Anaconda (~3 GB).
pip vs conda : ¿qué elegir?
| Criterio | pip + venv | conda |
|---|---|---|
| Público objetivo | Desarrolladores Python | Científicos de datos, estudiantes |
| Tamaño inicial | Muy ligero | Más pesado (sobre todo Anaconda) |
| Bibliotecas preinstaladas | Ninguna | Ya toda la suite de ciencia de datos |
| Velocidad de instalación | Muy rápida para NumPy | Más lenta pero resuelve mejor las dependencias |
| Bibliotecas C completas | A veces complicado (OpenCV, etc.) | Siempre funcional |
| Recomendación curso | OK si ya conoces Python | Recomendado para principiantes |
Verificar que NumPy funciona
Una vez instalado, abre un intérprete Python (escribiendo python en la terminal) y teclea:
import numpy as np # Verificar la versión print(np.__version__) # Salida esperada (por ejemplo): 2.1.0 # Crear un primer array a = np.array([1, 2, 3, 4, 5]) print(a) print("Tipo :", type(a)) print("Forma :", a.shape) print("Tipo de los elementos :", a.dtype)
Este artículo cubre los extractos más útiles — el curso completo Python NumPy (11 capítulos, 35 lecciones, ejercicios corregidos y proyecto final) te lleva hasta el final.
./acceder-al-curso-completo curso gratuito : Dominar Claude CodeFAQ
¿Cuánto tiempo se necesita para aprender Python NumPy?
¿Se necesitan requisitos previos?
¿Por dónde empezar concretamente?
📬 ¿Quieres recibir este tipo de guía cada semana? Suscríbete gratis — código real, cero palabrería.