NumPy es la piedra angular del cálculo científico en Python, y su potencia reside en gran medida en su objeto de matriz N-dimensional, el ndarray. Dominar los ndarrays es esencial para un uso efectivo de NumPy. Este tutorial proporciona una introducción completa a los ndarrays, cubriendo su creación, atributos y operaciones fundamentales.
Tabla de contenido
Definición de Ndarray
Un ndarray (matriz N-dimensional) de NumPy es un contenedor multidimensional homogéneo que contiene elementos del mismo tipo y tamaño. Considérelo una versión altamente optimizada y sofisticada de una lista de Python, capaz de manejar datos en múltiples dimensiones (1D, 2D, 3D y superiores). A diferencia de las listas de Python, que pueden contener elementos de diferentes tipos de datos, los ndarrays imponen homogeneidad de tipo, lo que resulta en ganancias de rendimiento sustanciales. Esta homogeneidad permite operaciones vectorizadas: aplicar operaciones a toda la matriz simultáneamente en lugar de elemento por elemento, mejorando drásticamente la velocidad.
Características clave de ndarray:
- Homogéneo: Todos los elementos comparten el mismo tipo de datos.
- Multidimensional: Representa datos en varias dimensiones (vectores 1D, matrices 2D, tensores 3D, etc.).
- Tamaño fijo: El tamaño de la matriz se fija al crearse y el cambio de tamaño normalmente implica crear una nueva matriz.
- Operaciones vectorizadas: Admite operaciones eficientes elemento a elemento y a nivel de matriz.
- Eficiencia de memoria: Almacena datos en bloques de memoria contiguos, mejorando el rendimiento.
Creación de Ndarray
Crear ndarrays es sencillo usando las funciones de NumPy:
import numpy as np
# Desde una lista
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# Usando funciones especializadas
arr_zeros = np.zeros((2, 3)) # Matriz de ceros
arr_ones = np.ones((3, 2)) # Matriz de unos
arr_arange = np.arange(10) # Secuencia de números
arr_linspace = np.linspace(0, 1, 5) # Números espaciados uniformemente
arr_random = np.random.rand(2, 2) # Números aleatorios
print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)
Atributos de Ndarray
Los objetos Ndarray ofrecen varios atributos cruciales que proporcionan información sobre su forma, tipo de datos, tamaño y más. Comprender estos atributos es clave para la manipulación efectiva de ndarrays.
ndim
: El número de dimensiones de la matriz (ejes).shape
: Una tupla que indica el tamaño de la matriz a lo largo de cada dimensión (por ejemplo, (3, 4) para una matriz de 3×4).size
: El número total de elementos.dtype
: El tipo de datos de los elementos (por ejemplo,int32
,float64
,bool
).itemsize
: El tamaño (en bytes) de cada elemento.nbytes
: El tamaño total (en bytes) de la matriz (itemsize * size
).
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Número de dimensiones:", arr.ndim)
print("Forma:", arr.shape)
print("Tamaño:", arr.size)
print("Tipo de datos:", arr.dtype)
print("Tamaño de elemento:", arr.itemsize)
print("Bytes totales:", arr.nbytes)
Operaciones básicas de Ndarray
NumPy proporciona operaciones eficientes elemento a elemento y a nivel de matriz. Las operaciones aritméticas simples (+, -, *, /, //, %, **) están vectorizadas:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print("Suma:", arr1 + arr2)
print("Resta:", arr1 - arr2)
print("Multiplicación:", arr1 * arr2)
print("División:", arr1 / arr2)
También hay disponibles operaciones más avanzadas (como la multiplicación de matrices, el producto punto, etc.).