Volver a la lista

numpy — La potencia de las operaciones con matrices.

Se explica la estructura de los `ndarray` de NumPy, el principio de las operaciones vectoriales, la diferencia de velocidad en comparación con las listas de Python y los métodos prácticos de uso.

Principiante
|
7min
|
Verificado (2026-07)
Progreso0/17 (0%)

numpy: el poder de las operaciones con arreglos

Al finalizar este tema

Podrás explicar qué es ndarray de numpy, sus ventajas frente a las listas y realizar operaciones básicas.


¿Qué es numpy?

numpy (NumPy) es una biblioteca para procesar rápidamente grandes cantidades de datos numéricos en Python.

python
import numpy as np
# Lista → ndarray
arr = np.array([1, 2, 3, 4, 5])
print(arr) # [1 2 3 4 5]
print(type(arr)) # <class 'numpy.ndarray'>

np es el acrónimo estándar de NumPy.


¿Por qué usar NumPy en lugar de listas?

Diferencias de rendimiento

python
import numpy as np
# Multiplicar cada uno de los 1 millón de elementos por 2
# Lista de Python puro
py_list = list(range(1_000_000))
result = [x * 2 for x in py_list] # lento
# numpy
np_arr = np.arange(1_000_000)
result = np_arr * 2 # rápido (10-100 veces)

NumPy está escrito internamente en C y almacena datos del mismo tipo en memoria contigua. Las listas de Python tienen elementos que son objetos Python independientes, mientras que ndarray tiene una memoria contigua, lo que resulta beneficioso para la caché de la CPU.

Operaciones vectoriales

python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# Operación elemento por elemento — sin bucles
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]
print(a > 2) # [False False True]

Para hacer esto en una lista, debes usar un bucle for. En NumPy, se puede hacer en una sola línea.


Creación de arreglos

python
import numpy as np
# Crear directamente
a = np.array([1, 2, 3])
# Relleno con ceros
zeros = np.zeros(5) # [0. 0. 0. 0. 0.]
# Relleno con unos
ones = np.ones(3) # [1. 1. 1.]
# Números consecutivos
seq = np.arange(0, 10, 2) # [0 2 4 6 8]
# Espaciado uniforme
lin = np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1. ]

Arreglos multidimensionales

python
import numpy as np
# Arreglo bidimensional (matriz)
matrix = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(matrix.shape) # (2, 3) — 2 filas, 3 columnas
print(matrix[0, 1]) # 2 — Fila 0, columna 1
print(matrix[:, 0]) # [1 4] — Columna 0 de todas las filas
# También es posible con arreglos tridimensionales
cube = np.zeros((2, 3, 4))
print(cube.shape) # (2, 3, 4)

shape devuelve las dimensiones del arreglo en forma de tupla. Es habitual consultar las dimensiones (shape) en análisis de datos, procesamiento de imágenes y aprendizaje automático.


Operaciones comunes

python
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6])
print(arr.sum()) # 31
print(arr.mean()) # 3.875
print(arr.std()) # 2.588...
print(arr.min()) # 1
print(arr.max()) # 9
print(arr.argmax()) # 5 (índice del valor máximo)
# Ordenamiento
print(np.sort(arr)) # [1 1 2 3 4 5 6 9]
# Filtro por condición
print(arr[arr > 3]) # [4 5 9 6]
# reshape — Cambio de forma
reshaped = arr.reshape(2, 4)
print(reshaped)
# [[3 1 4 1]
# [5 9 2 6]]

Broadcasting

Es posible realizar operaciones entre arrays de diferentes dimensiones.

python
import numpy as np
matrix = np.array([
[1, 2, 3],
[4, 5, 6]
])
# Sumar [10, 20, 30] a cada fila
row = np.array([10, 20, 30])
print(matrix + row)
# [[11 22 33]
# [14 25 36]]

NumPy expande automáticamente row a dos filas para realizar la operación. Esto se conoce como difusión (broadcasting). No es necesario escribir bucles explícitos.

💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...