NumPy
es un juego de palabras que significa Python numérico (Numerical Python). Es una librería de código abierto que se utiliza para llevar a cabo tareas matemáticas con altísima eficiencia. Además, introduce estructuras de datos como los arrays multidimensionales, que se pueden operar entre ellos a alto nivel, sin meterse mucho en el detalle.
En concreto, las claves de esta librería son:
ndarray
, que permite almacenar y manipular grandes conjuntos de datos de forma eficiente. Los arrays pueden tener cualquier número de dimensiones.NumPy es una biblioteca fundamental para el Machine Learning y la ciencia de los datos en Python. Proporciona una amplia gama de herramientas y funciones para trabajar eficientemente con datos numéricos en forma de arrays y matrices.
Un array de NumPy es una estructura de datos que permite almacenar una colección de elementos, generalmente números, en una o más dimensiones.
Un array unidimensional (1D) de NumPy es una estructura de datos que contiene una secuencia de elementos en una única dimensión. Es similar a una lista en Python, pero con las ventajas de rendimiento y funcionalidad que ofrece NumPy.
Un array 1D puede ser creado usando la función array
de la librería con una lista de elementos como argumento. Por ejemplo:
import numpy as np
array = np.array([1, 2, 3, 4, 5])
array
Esto creará un array 1D con los elementos 1, 2, 3, 4 y 5. Los elementos del array deben ser del mismo tipo de datos. Si los elementos son de diferentes tipos, NumPy intentará convertirlos al mismo tipo si es posible.
En un array 1D, podemos acceder a los elementos usando índices (indexes), modificarlos y realizar operaciones matemáticas en el array completo de forma eficiente. A continuación se muestran algunas operaciones que se pueden realizar utilizando el array anterior:
# Acceder al tercer elemento
print(array[2])
# Cambiar el valor del segundo elemento
array[1] = 7
print(array)
# Sumar 10 a todos los elementos
array += 10
print(array)
# Calcular la suma de los elementos
sum_all = np.sum(array)
print(sum_all)
Un array multidimensional o n-dimensional en NumPy es una estructura de datos que organiza elementos en múltiples dimensiones (ejes). Estos arrays permiten representar estructuras de datos más complejas, como matrices (array 2D, 2 ejes), tensores (array 3D, 3 ejes) y estructuras de mayor dimensión.
Un array N-dimensional puede ser creado también usando la función array
de la librería. Por ejemplo, si queremos crear un array 2D:
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array_2d
Si ahora quisiéramos crear un array 3D, tendríamos que pensar en él como una lista de matrices:
array_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
array_3d
Al igual que sucedía con los arrays 1D, los elementos en un array multidimensional son accesibles mediante índices, se pueden realizar operaciones con ellos, etcétera.
A medida que agregamos más dimensiones, el principio básico sigue siendo el mismo: cada dimensión adicional puede considerarse como un nivel adicional de anidamiento. Sin embargo, a nivel práctico, trabajar con arrays de más de 3 o 4 dimensiones puede volverse más complejo y menos intuitivo.
Los arrays n-dimensionales en NumPy permiten una gran flexibilidad y potencia para representar y manipular datos en formas más complejas, especialmente útiles en campos como la ciencia de los datos, procesamiento de imágenes y aprendizaje profundo.
NumPy proporciona una gran cantidad de funciones predefinidas y que se pueden aplicar directamente sobre las estructuras de datos vistas anteriormente o las propias de Python (listas, matrices, etcétera). Algunas de las más utilizadas en el análisis de datos son:
import numpy as np
# Crear un array para el ejemplo
arr = np.array([1, 2, 3, 4, 5])
# Operaciones Aritméticas
print("Suma:", np.add(arr, 5))
print("Producto:", np.multiply(arr, 3))
# Logarítmicas y Exponenciales
print("Logaritmo natural:", np.log(arr))
print("Exponencial:", np.exp(arr))
# Funciones Estadísticas
print("Media:", np.mean(arr))
print("Mediana:", np.median(arr))
print("Desviación estándar:", np.std(arr))
print("Varianza:", np.var(arr))
print("Máximo valor:", np.max(arr))
print("Índice del máximo valor:", np.argmax(arr))
print("Mínimo valor:", np.min(arr))
print("Índice del mínimo valor:", np.argmin(arr))
print("Suma de todos los elementos:", np.sum(arr))
# Funciones de Redondeo
arr_decimal = np.array([1.23, 2.47, 3.56, 4.89])
print("Redondeo:", np.around(arr_decimal))
print("Entero menor (floor):", np.floor(arr_decimal))
print("Entero mayor (ceil):", np.ceil(arr_decimal))
Un vector nulo es un array de una dimensión compuesto por ceros (0
).
NOTA: Revisa la función
np.zeros
(https://numpy.org/doc/stable/reference/generated/numpy.zeros.html)
NOTA: Revisa la función
np.ones
(https://numpy.org/doc/stable/reference/generated/numpy.ones.html)
linspace
de NumPy y crea un array que contenga 10 elementos (★☆☆)¶NOTA: Revisa la función
np.linspace
(https://numpy.org/doc/stable/reference/generated/numpy.linspace.html)
NOTA: Revisa las funciones
np.random.rand
(https://numpy.org/doc/stable/reference/random/generated/numpy.random.rand.html),np.random.randint
(https://numpy.org/doc/stable/reference/random/generated/numpy.random.randint.html) ynp.random.randn
(https://numpy.org/doc/stable/reference/random/generated/numpy.random.randn.html)
NOTA: Revisa la función
np.eye
(https://numpy.org/devdocs/reference/generated/numpy.eye.html)
NOTA: Revisa la función
np.min
(https://numpy.org/devdocs/reference/generated/numpy.min.html) ynp.max
(https://numpy.org/devdocs/reference/generated/numpy.max.html)
NOTA: Revisa la función
np.mean
(https://numpy.org/doc/stable/reference/generated/numpy.mean.html)
[1, 2, 3]
y la tupla (1, 2, 3)
en arrays (★☆☆)¶
NOTA: Revisa la función
np.flip
(https://numpy.org/doc/stable/reference/generated/numpy.flip.html)
NOTA: Revisa la función
np.reshape
(https://numpy.org/doc/stable/reference/generated/numpy.reshape.html)
[1, 2, 0, 0, 4, 0]
en un array y obtén el índice de los elementos que no son cero (★★☆)¶NOTA: Revisa la función
np.where
(https://numpy.org/devdocs/reference/generated/numpy.where.html)
[0, 5, -1, 3, 15]
en un array, multiplica sus valores por -2
y obtén los elementos pares (★★☆)¶
NOTA: Revisa la función
np.sort
(https://numpy.org/doc/stable/reference/generated/numpy.sort.html)
NOTA: Revisa las funciones matemáticas: https://numpy.org/doc/stable/reference/routines.math.html
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
en un array y transfórmalo en una matriz con filas de 3 columnas (★★★)¶