
Introducción a la libreria numpy
Es esta entrada vamos a hablar de la libreria numpy:
NumPy es una librería de Python especializada en el procesamiento numérico y científico de datos. Proporciona estructuras de datos como los arrays multidimensionales (ndarrays) y una amplia colección de funciones matemáticas optimizadas, que permiten realizar operaciones vectorizadas, álgebra lineal, estadísticas y transformaciones de datos de forma rápida y eficiente.
Gracias a su rendimiento y versatilidad, NumPy es la base de muchas otras bibliotecas del ecosistema científico y de machine learning en Python, como Pandas, TensorFlow o Scikit-learn.
Características de la libreria numpy
Entre las principales características que ofrece la libreria numpy en Python se encuentran:
-
Cuenta con una estructura de arrays que permite realizar operaciones vectorizadas de forma eficiente sobre datos numéricos.
-
Dispone de un extenso conjunto de funciones matemáticas y estadísticas, que al aplicarse sobre arrays, facilitan operaciones como sumas, productos, promedios, desviaciones estándar, entre otras.
-
Permite realizar operaciones de álgebra lineal, como suma y multiplicación de matrices, resolución de sistemas de ecuaciones lineales y el cálculo de autovalores y autovectores.
-
Se integra fácilmente con otras bibliotecas de Python utilizadas en ciencia de datos y machine learning, como pandas, scikit-learn y TensorFlow.
-
Está escrita en lenguaje C, lo que permite ejecutar operaciones de forma muy eficiente, siendo esencial en aplicaciones científicas, matemáticas y de ingeniería.
Como crear arrays en la libreria de numpy
Existen dos formas de crear un array [fila , columna]:
- Vector: a = np.array([1, 2])
- Matriz: a = np.array([(1, 2),(3,4)])
Para devolver las dimensiones:
import numpy as np a = np.array([1, 2]) # Creaccion de un vector b= np.array([(1, 2),(3,4)]) #Creaccion de una matriz #Devolucion de las dimensiones print(a.shape) print(b.shape)
(2,) (2, 2)
Otras preguntas
Desde la biblioteca Numpy, se pueden realizar una serie de operaciones esenciales con vectores, como:
1.Creación de vectores
import numpy as np a = np.array([1, 2]) print(a)[ 1 2 ]
Para saber la clase a la que pertenece un vector:
import numpy as np a = np.array([1, 2, 3, 4, 5]) print(«El valor de la clase es:», type(a))
El valor de la clase es: <class ‘numpy.ndarray’>
2.Agregar nuevos elementos a un vector existente
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x=np.append(arr, 10) print(x)[ 1 2 3 4 5 10]
3.Eliminar elementos no deseados de un vector
Se eliminando usando la opción np.delete(a,indice)
import numpy as np a = np.array([1,3,4,5,6]) print(a) s=np.delete(a, 1) print(s)[1 3 4 5 6][1 4 5 6]
4.Encontrar elementos únicos en un vector
import numpy as np s=np.unique([1, 1, 2, 8, 2, 3, 3]) print(s)[1 2 3 8]
5.Restricción de valores en un vector
Todos los valores a la izquierda de i [:i]
import numpy as np a = np.array([11, 12, 43, 54, 35]) print(a[:2])[11 12]
Todos los valores a la derecha de i incluido i [i:]
import numpy as np a = np.array([11, 12, 43, 54, 35]) print(a[2:])[43 54 35]
Todos los valores
import numpy as np a = np.array([11, 12, 43, 54, 35]) print(a[:])[11, 12, 43, 54, 35]
6.Limitar los valores de un arreglo a un rango específico
Se va a imprimir el array resultante aplicando la función np.clip. En este caso, los valores en el array original que son menores que 3 se establecen en 3, y los valores que son mayores que 8 se establecen en 8.
import numpy as np z = np.array([1,2,3,4,5,6,8,9]) print(np.clip(z, 3, 8))[3 3 3 4 5 6 8 8]
7.Determinar cuántas veces aparece cada elemento en un vector
Nos devuelve un array con las ocurrencias de cada elemento
import numpy as np arr = np.array([1,1,2,3,4,4]) a = np.bincount(arr) print(a)[0 2 1 1 2]
Esto significa que:
- 0 no aparece en arr.
- 1 aparece dos veces en arr.
- 2 aparece una vez en arr.
- 3 aparece una vez en arr.
- 4 aparece dos veces en arr.
8.Calcular máximos, mínimos y sumas de elementos de un vector
import numpy as np
a = np.array([(1, 2, 3, 4, 5, 6)])
print("El valor minimo es: ",a.min())
print("El valor maximo es: ",a.max())
print("La suma de los valores del vector es: ",a.sum())
El valor minimo es: 1
El valor maximo es: 6
La suma de los valores del vector es: 21
9.Calcular la raíz cuadrada de los elementos de un vector
import numpy as np
a = np.array([(1, 2, 3, 4, 5, 6)])
print("La raiz cuadrada del vector es: ", np.sqrt(a))
La raiz cuadrada del vector es: [[1. 1.41421356 1.73205081 2. 2.23606798 2.44948974]]
10.Calcular la desviación estándar de un vector
import numpy as np
a = np.array([(1, 2, 3, 4, 5, 6)])
print("La desviacion estandar de los elementos del vector es: ",np.std(a))
La desviacion estandar de los elementos del vector es: 1.707825127659933
11.Encontrar las posiciones en las que se cumple una condición específica en un vector
import numpy as np import numpy as np a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) s = np.where(a < 3) print(s)
(array([0, 1, 2], dtype=int64),)
Esto indica que los elementos en las posiciones [0, 1, 2] del vector a son menores que 3. Los índices se devuelven en un arreglo NumPy y están dentro de un conjunto de paréntesis.
import numpy as np import numpy as np a = np.array([0, 11, 22, 32, 41, 15, 61, 17, 3, 19]) s = np.where(a < 5, 1, 0) print(s)[1 0 0 0 0 0 0 0 1 0]
Muestra que los elementos en las posiciones donde la condición a < 5 es verdadera se establecen como 1 en el nuevo vector s, mientras que los elementos que no cumplen la condición se establecen como 0.
12.Concatenación de vectores
Vertical
import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.vstack((a,b)) print(c)[[1 2 3] [4 5 6]]
Horizontal
import numpy as np import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.hstack((a,b)) print(c)[1 2 3 4 5 6]
Desde la biblioteca Numpy, se pueden realizar una serie de operaciones esenciales, como:
1.Crear una matriz
import numpy as np a = np.array([(1, 2),(3,4)]) print(a)
[[1 2] [3 4]]
2.Crear una matriz con ceros y unos
import numpy as np
unos = np.ones((2,2))
ceros = np.zeros((2,2))
print("La matriz de ceros es:", ceros)
print("La matriz de unos es:", unos)
La matriz de ceros es: [[0. 0.] [0. 0.]] La matriz de unos es: [[1. 1.] [1. 1.]]
3.Crear una matriz aleatoria
import numpy as np
aleatoria= np.random.random((2,2))
print("La matriz aleatoria es: ", aleatoria)
La matriz aleatoria es:
[[0.13377701 0.6912948 ] [0.00247537 0.46947408]]4.Crear una matriz vacía
import numpy as np
vacia=np.empty((2,2))
print("La matriz vacia es: ", vacia)
La matriz vacía es:
[[3.33774490e-307 4.00545549e-307] [1.61324985e-307 4.67296746e-307]]5.Crear matriz que contenga el valor definido en todas las posiciones
import numpy as np
full = np.full((2,2),5)
print("La matriz vacía es: ", full)
La matriz vacía es: [[5 5] [5 5]]
6.Crear una matriz identidad
import numpy as np
identidad1 = np.identity(4)
identidad2 = np.eye(4,4)
print("La matriz identidad mediante la opción 1 es: ", identidad1)
print("La matriz identidad mediante la opción 2 es: ", identidad2)
La matriz identidad mediante la opción 1 es: [[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]] La matriz identidad mediante la opción 2 es: [[1. 0. 0. 0.] [0. 1. 0. 0.] [0. 0. 1. 0.] [0. 0. 0. 1.]]
7.Devolver las dimensiones de una matriz
import numpy as np
a = np.array([(1, 2),(3,4)])
print("La dimensiones de la matriz son: ",a.size)
La dimensiones de la matriz son: 4
8.Devolver el tamaño de una matriz
import numpy as np
a = np.array([(1, 2),(3,4)])
print("1. El numero de elementos de la matriz es: ",a.size)
print("2. El vector de dimensiones de la matriz es: ",a.shape)
print("3. El numero de columnas de la matriz es: ",a.shape[0])
print("4. El numero de filas de la matriz es: ",a.shape[1])
1. El numero de elementos de la matriz es: 4
2. El vector de dimensiones de la matriz es: (2, 2)
3. El numero de columnas de la matriz es: 2
4. El numero de filas de la matriz es: 2
9.Tipos de datos almacenados en una matriz
import numpy as np
import numpy as np
a = np.array([(1, 2),(3,4)])
b = np.array([(1.1, 2.1),(3.0,4.1)])
print("El tipo de datos almacenado en la matriz a es: ",a.dtype)
print("El tipo de datos almacenado en la matriz b es: ",b.dtype)
El tipo de datos almacenado en la matriz a es: int32
El tipo de datos almacenado en la matriz b es: float64
10.Cambio de dimensiones de una matriz
Reorganización de los elementos de una matriz a de 3×3 a una nueva matriz b que tiene 6×1
import numpy as np
import numpy as np
a = np.array([(8, 9, 10),(11,12,13)])
b = a.reshape(6,1)
print("La matriz a es: ",a)
print("La matriz b es: ",b)
La matriz a es:
[[ 8 9 10] [11 12 13]] La matriz b es: [[ 8] [ 9] [10] [11] [12] [13]] [[ 8] [ 9] [10] [11] [12] [13]]11.Selección de un elemento de una matriz
import numpy as np
import numpy as np
a = np.array([(8, 9, 10),(11,12,13)])
print("El elemento de 0,2 de la matriz a es: ",a[0,2])
El elemento de 0,2 de la matriz a es: 10
12.Extraer los valores una fila y de una columna
import numpy as np
import numpy as np
a = np.array([(8, 9, 10),(11,12,13)])
b = np.array([(1, 2, 3),(4,5,6)])
print("Los valores de todas las filas de la columna 1: ",a[0:,1])
print("Los valores de todas las columnas de la fila 1: ",b[1,0:])
Los valores de la columna 2 a partir de los valores que haya a la derecha de la fila 0: [ 9 12] Los valores de la fila 1 a partir de los valores que haya a la derecha de la columna 0: [4 5 6]
13.Transpuesta de una matriz
import numpy as np
import numpy as np
a = np.array([(1,2,3),(4,5,6),(7,8,9)])
print("La matriz original es: ", a)
print("La transpuesta de la matriz a es: ", a.T)
La matriz original es:
[[1 2 3] [4 5 6] [7 8 9]]La transpuesta de la matriz a es:
[[1 4 7] [2 5 8] [3 6 9]]14.Inversa de una matriz
import numpy as np
import numpy as np
a = np.array([(1,2,3),(4,5,6),(7,8,9)])
print("La matriz original es: ", a)
print("La inversa de la matriz a es: ", np.linalg.inv(a))
La matriz original es:
[[1 2 3] [4 5 6] [7 8 9]] La inversa de la matriz a es: [[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15] [-6.30503948e+15 1.26100790e+16 -6.30503948e+15] [ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]15.Devolución de los índices que ordenan una matriz
import numpy as np
import numpy as np
a = np.array([5,6,4,3,1,4])
print("La matriz original es: ", a)
print("La matriz ordenada es: ", np.argsort(a))
La matriz original es: [5 6 4 3 1 4] La matriz ordenada es: [4 3 2 5 0 1]
Devolución de los índices que ordenan una matriz en orden inverso
import numpy as np
import numpy as np
a = np.array([5,6,4,3,1,4])
print("La matriz original es: ", a)
print("La matriz ordenada en orden inverso es: ", np.argsort(a)[::-1])
La matriz original es: [5 6 4 3 1 4] La matriz ordenada en orden inverso es: [1 0 5 2 3 4]
16.Devolución orden de los elementos
import numpy as np
import numpy as np
a = np.array([5,6,4,3,1,4])
print("La matriz original es: ", a)
print("La matriz ordenada en orden inverso es: ", a[::-1])
La matriz original es: [5 6 4 3 1 4] La matriz ordenada en orden inverso es: [4 1 3 4 6 5]
17.Eliminar una columna o fila de un array
Vamos a utilizar la instrucción np.delete(matriz, indice, axis=None)
axis: Si vale 1 se eliminara por columnas, si vale 0 se eliminara por filas, si no hay valor, eliminará los valores ordenados de la matriz
import numpy as np
a = np.array([(1,2,5),(3,4,8),(9,3,1)])
s1=np.delete(a, 1 ,axis=0)
s2=np.delete(a, 1 ,axis=1)
s3=np.delete(a, 1 ,axis=None)
print("\n1. Matriz original:")
print(a)
print("\n2. Matriz después de eliminar la segunda fila:")
print(s1)
print("\n3. Matriz después de eliminar la segunda columna:")
print(s2)
print("\n4. Matriz después de eliminar el elemento en la posición (1, 1):")
print(s3)
1. Matriz original:[[1 2 5] [3 4 8] [9 3 1]]
2. Matriz después de eliminar la segunda fila:[[1 2 5] [9 3 1]]
3. Matriz después de eliminar la segunda columna:[[1 5] [3 8] [9 1]]
4. Matriz después de eliminar el elemento en la posición (1, 1):[1 5 3 4 8 9 3 1]
Operaciones de suma, resta, multiplicación y división de matrices
import numpy as np
a = np.array([(2,5,1),(3,4,3),(5,1,1)])
b = np.array([(1,6,1),(1,2,1),(1,1,2)])
print("Suma:")
print(a+b)
print("Resta:")
print(a-b)
print("Multiplicacion:")
print(a*b)
print("Division:")
print(a/b)
Suma:[[ 3 11 2] [ 4 6 4] [ 6 2 3]] Resta:[[ 1 -1 0] [ 2 2 2] [ 4 0 -1]] Multiplicacion:[[ 2 30 1] [ 3 8 3] [ 5 1 2]] Division:[[2. 0.83333333 1. ] [3. 2. 3. ] [5. 1. 0.5 ]]
1.Producto de dos matrices
import numpy as np
a = np.array([(2,5,1),(3,4,3),(5,1,1)])
b = np.array([(1,6,1),(1,2,1),(1,1,2)])
s = np.dot(a,b)
print("El producto de las matrices a y b es: ", s)
El producto de las matrices a y b es:
[[ 8 23 9] [10 29 13] [ 7 33 8]]2.Convertir una matriz de varias dimensiones a una sola dimensión
Toma una matriz con de dos dimensiones y la convierte en un arreglo de una sola dimensión
import numpy as np
a = np.array([[1, 7, 9], [8, 3, 2]])
s=np.ravel(a)
print("La conversión de la dimensión de dos dimensiones a una dimensión es: ", s)
La conversión de la dimensión de dos dimensiones a una dimensión es: [1 7 9 8 3 2]
3.Sumas en una matriz bidimensional a lo largo de sus filas y columnas
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
s1=np.sum(a, axis = 0) #suma las columnas
s2=np.sum(a, axis = 1) #suma las filas
print("La suma de las columnas es: ",s1)
print("La suma de las filas es: ",s2)
La suma de las columnas es: [5 7 9] La suma de las filas es: [ 6 15]
4.Matrices con valores espaciados uniformemente
import numpy as np
a= np.arange(0,40,5)
b=np.linspace(0,10,5)
print("La matriz que empieza en 0 hasta 35 de 5 en 5 es: ",a)
print("La matriz de cinco valores comprendidos entre 0 y 10 es, ",b)
La matriz que empieza en 0 hasta 35 de 5 en 5 es: [ 0 5 10 15 20 25 30 35] La matriz de cinco valores comprendidos entre 0 y 10 es, [ 0. 2.5 5. 7.5 10. ]


