Numpy
Tutorial Numpy: Operaciones matemáticas con arrays de Numpy
NumPy operaciones con arrays: Aprende a realizar operaciones aritméticas, lógicas y más con arrays en NumPy. Guía esencial para ingenieros de software.
Operaciones aritméticas y matemáticas básicas
Numpy proporciona una amplia gama de funciones para realizar operaciones aritméticas y matemáticas básicas sobre arrays. A continuación, se presentan las operaciones aritméticas más comunes:
Suma
Se puede realizar la suma elemento a elemento en dos arrays con el operador +
o usando la función numpy.add
.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b # [5, 7, 9]
d = np.add(a, b) # [5, 7, 9]
Resta
La resta se puede realizar con el operador -
o utilizando la función numpy.subtract
.
import numpy as np
a = np.array([5, 6, 7])
b = np.array([1, 2, 3])
c = a - b # [4, 4, 4]
d = np.subtract(a, b) # [4, 4, 4]
Multiplicación
La multiplicación elemento a elemento se realiza con el operador *
o la función numpy.multiply
.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a * b # [4, 10, 18]
d = np.multiply(a, b) # [4, 10, 18]
División
Para la división, se puede emplear el operador /
o la función numpy.divide
.
import numpy as np
a = np.array([10, 20, 30])
b = np.array([2, 4, 5])
c = a / b # [5.0, 5.0, 6.0]
d = np.divide(a, b) # [5.0, 5.0, 6.0]
Exponenciación
Numpy permite la exponenciación elemento a elemento utilizando el operador **
o la función numpy.power
.
import numpy as np
a = np.array([2, 3, 4])
b = np.array([1, 2, 3])
c = a ** b # [2, 9, 64]
d = np.power(a, b) # [2, 9, 64]
Raíz cuadrada
Se puede calcular la raíz cuadrada de cada elemento del array usando numpy.sqrt
.
import numpy as np
a = np.array([1, 4, 9, 16])
b = np.sqrt(a) # [1.0, 2.0, 3.0, 4.0]
Logaritmo
Numpy incluye funciones para calcular logaritmos en diferentes bases. Por ejemplo, numpy.log
calcula el logaritmo natural (base e
), mientras que numpy.log10
y numpy.log2
calculan los logaritmos en base 10 y 2 respectivamente.
import numpy as np
a = np.array([1, np.e, 10])
natural_log = np.log(a) # [0.0, 1.0, 2.30258509]
log_base_10 = np.log10(a) # [0.0, 0.43429448, 1.0]
log_base_2 = np.log2(a) # [0.0, 1.44269504, 3.32192809]
Trigonometría
Numpy también proporciona funciones para operaciones trigonométricas básicas como numpy.sin
, numpy.cos
, y numpy.tan
, que calculan el seno, coseno, y tangente respectivamente.
import numpy as np
angles = np.array([0, np.pi / 2, np.pi])
sinus = np.sin(angles) # [0.0000000e+00 1.0000000e+00 1.2246468e-16]
cosine = np.cos(angles) # [ 1.000000e+00 6.123234e-17 -1.000000e+00]
tangent = np.tan(angles) # [ 0.00000000e+00 1.63312394e+16 -1.22464680e-16]
Suma acumulada
Para calcular la suma acumulada de los elementos de un array se utiliza numpy.cumsum
.
import numpy as np
a = np.array([1, 2, 3, 4])
cumsum = np.cumsum(a) # [1, 3, 6, 10]
Estas son algunas de las operaciones aritméticas y matemáticas básicas que se pueden realizar con Numpy. Estas funciones permiten manipular y procesar datos de manera eficiente y son fundamentales para tareas de análisis y procesamiento de datos.
Operaciones de redondeo y ajuste de decimales
Numpy facilita diversas funciones que permiten redondear y ajustar decimales en arrays de forma precisa y controlada. Estas funciones son esenciales cuando se trabaja con valores numéricos que requieren un tratamiento específico de decimales.
A continuación, se detallan algunas de las más importantes.
Numpy proporciona la función numpy.round
para redondear elementos a un número especificado de decimales:
import numpy as np
a = np.array([1.345, 2.678, 3.123])
b = np.round(a, 2) # [1.34, 2.68, 3.12]
Ajuste de decimales con numpy.fix
La función numpy.fix
redondea los valores hacia cero, lo que equivale al truncamiento del número.
import numpy as np
a = np.array([-2.5, 2.3, 1.5, -1.4])
b = np.fix(a) # [-2., 2., 1., -1.]
Redondeo hacia cero con numpy.trunc
La función numpy.trunc
también realiza un truncamiento similar a numpy.fix
, eliminando los decimales y manteniendo la parte entera.
import numpy as np
a = np.array([-3.8, 3.5])
b = np.trunc(a) # [-3., 3.]
Redondeo hacia el infinito más lejano con numpy.floor
y numpy.ceil
Para obtener el entero más cercano menor o igual al valor, se utiliza numpy.floor
:
import numpy as np
a = np.array([-2.5, 2.3, 3.7])
b = np.floor(a) # [-3., 2., 3.]
Por otro lado, numpy.ceil
permite redondear hacia el entero más cercano mayor o igual al valor:
import numpy as np
a = np.array([-2.5, 2.3, 3.7])
b = np.ceil(a) # [-2., 3., 4.]
Redondeo al entero más cercano con numpy.rint
La función numpy.rint
redondea al entero más cercano, teniendo en cuenta las reglas de redondeo estándar (redondea hacia el número par más cercano si el valor es equidistante entre dos enteros).
import numpy as np
a = np.array([-2.5, 2.3, 3.7])
b = np.rint(a) # [-2., 2., 4.]
Ajuste de decimales con numpy.around
La función numpy.around
permite redondear los valores de un array a un número específico de decimales, similar a numpy.round
.
import numpy as np
a = np.array([1.345, 2.678, 3.123])
b = np.around(a, 1) # [1.3, 2.7, 3.1]
Selección de cifras significativas
Para ajustarse a un número de cifras significativas, se puede usar numpy.around
con un segundo parámetro negativo, que representa el número de posiciones después del decimal a considerar.
import numpy as np
a = np.array([1234.5678, 5678.1234])
b = np.around(a, -1) # [1230.0, 5680.0]
Estas funciones de redondeo y ajuste de decimales proporcionan una gran flexibilidad y precisión en el manejo de valores numéricos en Numpy, permitiendo a los ingenieros de software adaptar los resultados a las necesidades específicas de sus cálculos y aplicaciones.
Ordenación de arrays
Numpy proporciona varias funciones para ordenar arrays, lo que es útil para organizar y analizar datos. A continuación se presentan las principales funciones de ordenación disponibles en Numpy:
Ordenación simple
La función np.sort
devuelve una copia del array ordenada a lo largo del eje especificado.
import numpy as np
# Crear un array desordenado
array = np.array([3, 1, 2, 5, 4])
# Ordenar el array
sorted_array = np.sort(array)
print(sorted_array) # [1, 2, 3, 4, 5]
Para ordenar un array 2D a lo largo de un eje específico:
import numpy as np
# Crear un array 2D desordenado
array_2d = np.array([[3, 1, 2], [5, 4, 6]])
# Ordenar el array a lo largo del eje-0 (filas)
sorted_array_0 = np.sort(array_2d, axis=0)
print(sorted_array_0)
# [[3, 1, 2],
# [5, 4, 6]]
# Ordenar el array a lo largo del eje-1 (columnas)
sorted_array_1 = np.sort(array_2d, axis=1)
print(sorted_array_1)
# [[1, 2, 3],
# [4, 5, 6]]
Índices de ordenación
La función np.argsort
devuelve los índices que ordenarían un array. Es útil para obtener el orden de los elementos sin modificar el array original.
import numpy as np
# Crear un array desordenado
array = np.array([3, 1, 2, 5, 4])
# Obtener los índices de ordenación
sorted_indices = np.argsort(array)
print(sorted_indices) # [1, 2, 0, 4, 3]
# Usar los índices para ordenar el array
sorted_array = array[sorted_indices]
print(sorted_array) # [1, 2, 3, 4, 5]
Ordenación lexicográfica
La función np.lexsort
realiza una ordenación lexicográfica utilizando múltiples claves. Las claves se pasan como una tupla.
import numpy as np
# Crear arrays de claves
keys1 = np.array([1, 0, 3, 2])
keys2 = np.array([4, 1, 3, 2])
# Ordenar lexicográficamente usando las dos claves
sorted_indices = np.lexsort((keys2, keys1))
print(sorted_indices) # [1, 0, 3, 2]
Ordenación parcial
La función np.partition
permite reordenar los elementos de un array de manera que todos los elementos menores que un valor de pivote aparezcan antes de dicho valor, y todos los elementos mayores aparezcan después. Es útil para operaciones de selección y ordenación parcial.
import numpy as np
# Crear un array desordenado
array = np.array([7, 2, 3, 1, 6, 5, 4])
# Particionar el array alrededor del 3er elemento
partitioned_array = np.partition(array, 3)
print(partitioned_array) # Los elementos antes del índice 3 son menores o iguales, y después son mayores
Operaciones lógicas y comparaciones
NumPy proporciona una serie de funciones lógicas y de comparación que facilitan la realización de operaciones condicionales y análisis booleanos sobre arrays. Estas funciones son esenciales para el filtrado de datos y la aplicación de condiciones específicas en la manipulación y análisis de arrays.
Comparaciones elementales
NumPy permite realizar comparaciones elementales entre arrays o entre un array y un escalar. Las principales comparaciones son:
- Igualdad (
==
): Comprueba si los elementos son iguales. - Desigualdad (
!=
): Comprueba si los elementos son diferentes. - Mayor que (
>
): Comprueba si los elementos son mayores. - Menor que (
<
): Comprueba si los elementos son menores. - Mayor o igual que (
>=
): Comprueba si los elementos son mayores o iguales. - Menor o igual que (
<=
): Comprueba si los elementos son menores o iguales.
import numpy as np
a = np.array([1, 2, 3])
b = np.array([3, 2, 1])
equal = a == b # [False, True, False]
not_equal = a != b # [True, False, True]
greater = a > b # [False, False, True]
less = a < b # [True, False, False]
greater_equal = a >= b # [False, True, True]
less_equal = a <= b # [True, True, False]
Funciones lógicas elementales
NumPy también proporciona funciones lógicas tales como numpy.logical_and
, numpy.logical_or
, y numpy.logical_not
que permiten realizar operaciones booleanas entre arrays.
import numpy as np
a = np.array([True, False, True])
b = np.array([False, False, True])
logical_and = np.logical_and(a, b) # [False, False, True]
logical_or = np.logical_or(a, b) # [True, False, True]
logical_not = np.logical_not(a) # [False, True, False]
Operaciones de comparación combinadas
Se pueden combinar operaciones lógicas y de comparación para generar condiciones complejas:
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([4, 3, 2, 1])
# Elementos de a que son mayores que 2 y menos de 4
condition = np.logical_and(a > 2, a < 4) # [False, False, True, False]
# Elementos de a que son mayores que 2 o menores que 2
condition = np.logical_or(a > 2, a < 2) # [True, False, True, True]
Aplicación de condiciones a arrays
La función numpy.where
permite aplicar condiciones de manera eficiente, retornando elementos de uno de dos arrays dependiendo de una condición:
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([4, 3, 2, 1])
# Si el elemento en a es mayor que 2, selecciona el elemento en a; de lo contrario, selecciona el elemento en b
result = np.where(a > 2, a, b) # [4, 3, 3, 4]
Evaluación lógica de arrays
NumPy permite la evaluación lógica de arrays completos utilizando funciones como numpy.all
y numpy.any
:
import numpy as np
a = np.array([True, True, False])
all_true = np.all(a) # False, porque no todos los elementos son True
any_true = np.any(a) # True, porque al menos un elemento es True
Comparación de arrays completos
Para comparar dos arrays completos y verificar si son iguales, se puede utilizar numpy.array_equal
:
import numpy as np
a = np.array([1, 2, 3])
b = np.array([1, 2, 3])
c = np.array([3, 2, 1])
array_equal = np.array_equal(a, b) # True, porque a y b son iguales
array_not_equal = np.array_equal(a, c) # False, porque a y c no son iguales
Estas operaciones lógicas y de comparación son herramientas poderosas en NumPy que facilitan la manipulación y análisis de datos de manera eficiente y efectiva, permitiendo a los ingenieros de software implementar lógicas complejas de una forma simple y directa.
Selección y filtrado
El proceso de selección y filtrado en NumPy es fundamental para manipular y analizar datos de manera eficiente. NumPy proporciona varias formas de seleccionar elementos específicos de un array y aplicar filtros basados en condiciones específicas.
Selección de elementos por índices: utilizando índices, puede seleccionar elementos específicos o rangos de elementos en un array. NumPy soporta indexación de arrays de una o múltiples dimensiones.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
element = a[2] # 3
subset = a[1:4] # [2, 3, 4]
Selección avanzada: se puede utilizar una lista de índices para seleccionar múltiples elementos.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
selection = a[[0, 2, 4]] # [1, 3, 5]
Selección con condiciones: utilizando operaciones de comparación y funciones lógicas. Se puede generar un array booleano que indica cuáles elementos cumplen con una condición y usarlo para filtrar el array original.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
greater_than_2 = a[a > 2] # [3, 4, 5]
Combinación de condiciones: utilizando operadores lógicos (&
para AND, |
para OR), puede combinar múltiples condiciones.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
between_2_and_4 = a[(a > 2) & (a < 5)] # [3, 4]
Selección condicional con np.where
: numpy.where
es útil para reemplazar elementos basados en una condición. Retorna elementos de uno de dos arrays dependiendo de una condición.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
# Si el elemento es mayor que 3, selecciona el -1; si no, el elemento original
condition = np.where(a > 3, -1, a) # [1, 2, 3, -1, -1]
Aplicar condiciones booleanas: np.any
y np.all
permiten evaluar condicionalmente arrays en su totalidad o a lo largo de un eje especificado.
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
any_element_greater_than_4 = np.any(a > 4) # True
all_elements_greater_than_0 = np.all(a > 0) # True
Selección en arrays multidimensionales: se pueden seleccionar elementos específicos o sub-arrays utilizando tuplas de índices o slices.
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
element = a[1, 2] # 6
subarray = a[:, 1] # [2, 5]
Indexación booleana: para seleccionar elementos que cumplan con ciertas condiciones en arrays multidimensionales.
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
condition = a > 3
filtered_elements = a[condition] # [4, 5, 6]
Selección con np.take
: numpy.take
permite una selección rápida y directa a lo largo de un eje específico.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
indices = [0, 2, 4]
selected_elements = np.take(a, indices) # [1, 3, 5]
Estas herramientas de selección y filtrado permiten trabajar con datos de manera precisa y eficiente, facilitando tareas como la limpieza, transformación y análisis de grandes conjuntos de datos.
Ejercicios de esta lección Operaciones matemáticas con arrays de Numpy
Evalúa tus conocimientos de esta lección Operaciones matemáticas con arrays de Numpy con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Funciones estadísticas
Integración con Pandas
Instalación de Numpy
Conocimiento general de Numpy
Creación de arrays en Numpy
Operaciones matemáticas con Arrays de Numpy
Cálculo de estadísticas de Numpy sobre estudiantes
Modificación de arrays en Numpy
Propiedades y atributos de arrays de Numpy
Indexación y segmentación
Operaciones de álgebra lineal
Conocimiento general de Numpy
Integración de Numpy con Matplotlib
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.
Instalación De Numpy
Introducción Y Entorno
Creación De Arrays En Numpy
Arrays
Propiedades Y Atributos De Arrays De Numpy
Arrays
Indexación Y Segmentación En Numpy
Arrays
Modificación De Arrays En Numpy
Arrays
Operaciones Matemáticas Con Arrays De Numpy
Operaciones Con Arrays
Funciones Estadísticas
Operaciones Con Arrays
Operaciones De Álgebra Lineal
Operaciones Con Arrays
Integración Con Pandas
Integraciones
Integración De Numpy Con Matplotlib
Integraciones
Conocimiento General De Numpy Evaluación Test Multirespuesta
Evaluación Numpy
Conocimiento General De Numpy Evaluación Código
Evaluación Numpy
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
Realizar operaciones aritméticas básicas (suma, resta, multiplicación, división).
Aplicar funciones matemáticas avanzadas (exponenciación, logaritmos, trigonometría).
Utilizar funciones de redondeo y ajuste de decimales.
Ordenar arrays y comprender técnicas de ordenación parcial.
Realizar comparaciones elementales y lógicas sobre arrays.
Seleccionar y filtrar elementos en arrays unidimensionales y multidimensionales.