NumPy

Numpy

Tutorial Numpy: Instalación de Numpy

NumPy instalación: Aprende a instalar NumPy en Python utilizando métodos como pip y conda. Guía paso a paso para instalar y verificar la versión de NumPy.

¿Qué es Numpy?

NumPy, abreviación de Numerical Python, es una librería fundamental para la computación científica en Python. Se utiliza principalmente para manejar y operar con arrays multidimensionales y matrices, así como para realizar una amplia gama de operaciones matemáticas sobre estos datos de manera eficiente.

NumPy proporciona soporte para:

  • Arrays multidimensionales, llamados ndarrays, que son contenedores eficientes y versátiles para datos numéricos homogéneos. Los ndarrays no solo permiten manipulación sencilla de grandes cantidades de datos, sino que también ofrecen diversas operaciones usadas en computación científica.
  • Operaciones matemáticas vectorizadas, lo que permite la ejecución de operaciones elementales y complejas a bajos niveles de CPU, evitando la implementación manual de bucles en Python.
  • Funcionalidades de álgebra lineal, generación de números aleatorios y otras transformaciones matemáticas comúnmente utilizadas en la ciencia de datos y aprendizaje automático.

A diferencia de las listas de Python, los arrays de NumPy son más compactos y eficientes en términos de memoria y tiempo de computación, ya que se almacenan contiguamente en memoria y se procesan en bloque. Esto mejora significativamente el rendimiento, especialmente cuando se trabaja con grandes volúmenes de datos.

Ejemplo de declaración y manipulación de un array simple en NumPy:

import numpy as np

# Crear un array unidimensional
arr = np.array([1, 2, 3, 4])

# Realizar operaciones básicas
arr_sum = np.sum(arr)
arr_mean = np.mean(arr)
arr_squared = arr ** 2

print("Array original:", arr)
print("Suma de los elementos:", arr_sum)
print("Media de los elementos:", arr_mean)
print("Array al cuadrado:", arr_squared)

En resumen, NumPy es una herramienta esencial en el ecosistema de Python, especializada en la manipulación y análisis de grandes conjuntos de datos numéricos con alta eficiencia y rendimiento.

¿Cómo se instala Numpy? Diferentes métodos de instalación y comprobar la versión de Numpy

Para instalar NumPy, es necesario tener Python instalado en tu sistema. Existen varios métodos de instalación en función de las necesidades y del entorno en el que se quiera instalar. A continuación, se detallan los diferentes métodos de instalación junto con las instrucciones paso a paso.

Instalación con pip

pip es el gestor de paquetes oficial de Python y la forma más común de instalar NumPy. Ejecuta el siguiente comando en el terminal o cmd:

pip install numpy

Instalación con conda

Si utilizas Anaconda o Miniconda como gestor de entornos y paquetes, puedes instalar NumPy utilizando conda. Este método también es recomendado cuando se trabaja con otras librerías que tienen dependencias complejas.

conda install numpy

Instalación desde el código fuente

Aunque menos común, es posible instalar NumPy directamente desde su código fuente. Esto puede ser útil para desarrolladores que quieren contribuir al código base de NumPy o que necesitan personalizar la instalación. Los pasos son los siguientes:

  • Clona el repositorio desde GitHub:
git clone https://github.com/numpy/numpy.git
  • Accede al directorio clonado:
cd numpy
  • Construye y instala NumPy:
python setup.py install

Instalación en Jupyter Notebook

Si estás trabajando en un entorno de Jupyter Notebook, puedes instalar NumPy directamente desde una celda de código ejecutando:

!pip install numpy

Comprobar la versión de NumPy

Una vez instalado, puedes verificar que NumPy se ha instalado correctamente y consultar su versión utilizando el siguiente código en Python:

import numpy as np

print(np.__version__)

Esto te devolverá la versión de NumPy instalada, por ejemplo, 2.0.1. Esta comprobación es útil para asegurarse de que tienes la versión adecuada para tus necesidades o para reportar en proyectos colaborativos.

Para qué sirve Numpy

NumPy es una pieza clave en la caja de herramientas de cualquier ingeniero de software que trabaje con Python y necesite manipular grandes conjuntos de datos numéricos con alta eficiencia. La librería cubre una gama amplia de aplicaciones y escenarios, algunos de los cuales se detallan a continuación.

Manipulación y procesamiento de datos numéricos

NumPy proporciona una manera eficiente de manejar arrays y matrices grandes. 

Sus arrays ndarray permiten:

  • Almacenamiento eficiente de datos homogéneos en un contenedor continuo en memoria.
  • Realización de operaciones elementales y complejas a través de funciones vectorizadas, evitando la sobrecarga de los bucles en Python nativo.

Computación científica y análisis numérico

Numerosas operaciones matemáticas en ámbitos científicos requieren la manipulación de grandes conjuntos de datos. 

NumPy proporciona funciones y herramientas que facilitan estas operaciones:

  • Funciones de álgebra lineal (numpy.linalg), incluyendo operaciones con matrices, determinantes, valores propios, entre otros.
  • Evaluación y manipulación de polinomios a través del submódulo numpy.polynomial.
  • Transformaciones Fourier y otras transformaciones matemáticas (numpy.fft).

Generación de números aleatorios y simulaciones

La sub-librería numpy.random es utilizada para generar números aleatorios y llevar a cabo simulaciones estadísticamente relevantes. La versión moderna de NumPy proporciona una API más flexible y robusta a través de la clase Generator, que se recomienda para nuevos proyectos.

Esto incluye:

  • Generación de números aleatorios uniformes, normales, distribuciones binomiales, entre otros.
  • Funciones para permutaciones y aleatorización de arrays.

Integración con otras librerías de Python

NumPy es el punto de partida de muchas otras librerías de análisis de datos y aprendizaje automático, como:

  • Pandas: Utiliza la estructura ndarray de NumPy para sus objetos DataFrame y Series.
  • SciPy: Se basa en NumPy para las operaciones de alta complejidad en computación científica.
  • Scikit-learn: Emplea NumPy para operaciones de aprendizaje automático y análisis predictivo.

Casos de uso en machine learning e inteligencia artificial

En machine learning e inteligencia artificial, se manejan grandes volúmenes de datos que requieren procesamiento eficiente. 

NumPy se usa para:

  • Preparación y transformación de datos antes de ser procesados por algoritmos de aprendizaje automático.
  • Implementación de algoritmos personalizados que requieren operaciones matriciales intensivas.
  • Evaluación de modelos a través de métricas estadísticas y análisis detallados.

Visualización y análisis gráfico

Aunque NumPy no proporciona visualización directamente, es el backend numérico para librerías de gráficos como Matplotlib y Seaborn. Los datos manipulados con NumPy se visualizan fácilmente utilizando estas herramientas.

import numpy as np
import matplotlib.pyplot as plt

# Generar datos utilizando numpy
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Visualizar utilizando matplotlib
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('Seno de x')
plt.grid(True)
plt.show()

El código anterior generaría el siguiente gráfico:

¿Cuándo usar Numpy?

NumPy es una biblioteca esencial en la computación científica y el análisis de datos en Python, especialmente cuando se requiere manipulación y procesamiento eficiente de datos numéricos. 

Aquí se detallan algunas situaciones y casos de uso en los que NumPy es la herramienta adecuada:

Trabajar con grandes conjuntos de datos numéricos

Cuando se necesita realizar operaciones sobre grandes volúmenes de datos numéricos que no pueden ser gestionados eficientemente con las estructuras de datos nativas de Python, como las listas y las tuplas. 

NumPy maneja arrays multidimensionales ndarray que son mucho más eficientes en memoria y velocidad de procesamiento.

import numpy as np

big_array = np.array([i for i in range(1000000)])

Operaciones matemáticas y estadísticas complejas

Si tu proyecto requiere realizar operaciones matemáticas avanzadas, álgebra lineal o estadísticas complejas, NumPy ofrece una amplia gama de funciones optimizadas que ejecutan estas tareas de manera más rápida que las implementaciones manuales.

import numpy as np

matrix = np.array([[1, 2], [3, 4]])
inverse_matrix = np.linalg.inv(matrix)

Vectorización y operaciones element-wise

NumPy permite la vectorización de operaciones, lo que significa que puedes realizar operaciones simultáneamente sobre todos los elementos de un array sin necesidad de escribir bucles explícitos. Esto no solo hace que el código sea más legible, sino también más eficiente.

import numpy as np

array1 = np.array([1, 2, 3, 4])
array2 = np.array([5, 6, 7, 8])

result = array1 + array2  # Vectorización

Generación de números aleatorios y simulación

NumPy es idóneo para simulaciones que requieren generación de números aleatorios. Permite generar secuencias de números aleatorios con diversas distribuciones estadísticas, esenciales para modelos estadísticos y simulaciones.

import numpy as np

seed = 42
rng = np.random.default_rng(seed)

# Generar un array con 1000 números aleatorios de una distribución normal
random_array = rng.normal(0, 1, 1000)

Compatibilidad con otras librerías científicas

NumPy se integra perfectamente con otras bibliotecas científicas y de análisis de datos en Python, como Pandas, SciPy, Matplotlib, entre otras. Es común utilizar NumPy para manipular datos antes de visualizarlos con Matplotlib o analizarlos con Pandas.

import numpy as np
import pandas as pd

data = np.array([1, 2, 3, 4, 5])
df = pd.DataFrame(data, columns=['Numbers'])

Machine Learning y Deep Learning

En el campo del Machine Learning y el Deep Learning, donde las operaciones matriciales y la manipulación de grandes volúmenes de datos son comunes, NumPy es crucial. Es frecuentemente utilizado en preprocesamiento de datos, construcción de features y manipulación de datos de entrada y salida.

import numpy as np
from sklearn.preprocessing import StandardScaler

data = np.array([[1, 2], [3, 4], [5, 6]])
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

En resumen, NumPy es indispensable cuando se necesita trabajar con datos numéricos de manera eficiente, realizar operaciones matemáticas complejas y garantizar la alta eficiencia en términos de tiempo de ejecución y uso de memoria.

Listado breve y conciso de los principales métodos de Numpy

NumPy ofrece una amplia variedad de métodos que facilitan la manipulación y análisis de arrays y matrices. A continuación, se presenta un listado conciso de algunos de los métodos más utilizados y sus funciones principales.

Manipulación de arrays

  • np.array(): Crea un array a partir de listas, tuplas, etc.
arr = np.array([1, 2, 3])
  • np.zeros(): Genera un array de ceros con una forma dada.
arr = np.zeros((2, 3))
  • np.ones(): Genera un array de unos con una forma dada.
arr = np.ones((2, 3))
  • np.empty(): Crea un array sin inicializar.
arr = np.empty((2, 3))
  • np.arange(): Genera un array con valores equiespaciados dentro de un intervalo.
arr = np.arange(0, 10, 2)
  • np.linspace(): Genera un array con un número especificado de puntos equiespaciados entre dos valores.
arr = np.linspace(0, 1, 5)
  • np.reshape(): Cambia la forma de un array sin cambiar sus datos.
arr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr.reshape((2, 3))

Operaciones matemáticas

  • np.sum(): Calcula la suma de los elementos del array.
sum_val = np.sum(arr)
  • np.mean(): Calcula la media aritmética de los elementos del array.
mean_val = np.mean(arr)
  • np.std(): Calcula la desviación estándar de los elementos del array.
std_val = np.std(arr)
  • np.max(): Encuentra el valor máximo en el array.
max_val = np.max(arr)
  • np.min(): Encuentra el valor mínimo en el array.
min_val = np.min(arr)
  • np.dot(): Realiza el producto escalar entre dos arrays.
dot_product = np.dot(arr1, arr2)

Indexación y slicing

  • arr[index]: Accede a un elemento específico del array.
element = arr[2]
  • arr[start:stop]: Accede a una sub-sección del array.
sub_arr = arr[1:4]
  • arr[condition]: Crea un sub-array basado en una condición.
boolean_mask = arr > 2
filtered_arr = arr[boolean_mask]

Álgebra lineal

  • np.linalg.inv(): Calcula la inversa de una matriz.
inv_matrix = np.linalg.inv(matrix)
  • np.linalg.eig(): Calcula los valores y vectores propios de una matriz.
eigenvalues, eigenvectors = np.linalg.eig(matrix)
  • np.dot(): Multiplicación de matrices.
product = np.dot(matrix1, matrix2)

Generación de números aleatorios

  • rng.random(): Genera un array de números aleatorios uniformemente distribuidos entre 0 y 1.
seed = 42
rng = np.random.default_rng(seed)
rand_arr = rng.random((3, 2))
  • rng.standard_normal(): Genera un array de números aleatorios con distribución normal.
randn_arr = rng.standard_normal((3, 2))
  • rng.integers(): Genera un array de enteros aleatorios dentro de un rango específico.
randint_arr = rng.integers(low=0, high=10, size=(3, 2))

Manipulación de ejes

  • np.transpose(): Transpone las dimensiones de un array.
transposed_arr = np.transpose(arr)
  • np.concatenate(): Concatena dos o más arrays.
combined_arr = np.concatenate((arr1, arr2), axis=0)
  • np.split(): Divide un array en múltiples sub-arrays.
splitted_arr = np.split(arr, 3)

Funciones universales

  • np.sin(), np.cos(), np.tan(): Aplican funciones trigonométricas elemento por elemento en un array.
sin_values = np.sin(arr)
  • np.exp(): Calcula la exponencial de cada elemento en el array.
exp_values = np.exp(arr)
  • np.log(): Calcula el logaritmo natural de cada elemento en el array.
log_values = np.log(arr)

Estos son solo algunos de los métodos más utilizados de NumPy. La librería ofrece muchos otros métodos especializados que facilitan un amplio rango de tareas en computación científica y análisis de datos.

Certifícate en Numpy con CertiDevs PLUS

Ejercicios de esta lección Instalación de Numpy

Evalúa tus conocimientos de esta lección Instalación de Numpy con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Numpy

Accede a todas las lecciones de Numpy y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Numpy

Supera todos los ejercicios de programación del curso de Numpy y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

- Entender qué es NumPy y su importancia en la computación científica.

- Conocer diferentes métodos de instalación de NumPy.

- Aprender a verificar la instalación y la versión de NumPy.

- Familiarizarse con la instalación de NumPy en diferentes entornos de desarrollo.