NumPy: Funciones basicas de algebra
- junio 21, 2017
- Publicado por: Rafael Fernandez
- Categoría: Blog Principiante Python
NumPy nos agrega apoyo para el cálculo de vectores y matrices con funciones matemáticas de alto nivel. En 2005, Travis Oliphant creó NumPy incorporando características de Numarray a NumPy. Hoy en día NumPy es de código abierto y es la librería por excelencia de Python para vectores y matrices.
Explorar la librería Numpy y sus funciones.
Realizar operaciones con vectores y matrices en Python.
Numpy: Álgebra en Python
Operaciones básicas
Para cargar Numpy en Python e invocarlo de forma sencilla se suele utilizar el alias np
[php] import numpy as np # Importamos numpy como np[/php]
Numpy para cargar un archivo de datos y lo mostramos
Cargamos los datos del archivo.txt en este caso el delimitador es la coma.
[php] archivoDatos=np.loadtxt(‘C:\ruta\archivoDatos.txt’, delimiter = ‘,’)[/php]
Arrays con Numpy
- ndarray.ndim –> Proporciona el número de dimensiones de nuestro array.
- ndarray.dtype –> Es un objeto que describe el tipo de elementos del array.
- ndarray.shape –> Devuelve la dimensión del array, es decir, una tupla de enteros indicando el tamaño del array en cada dimensión. Para una matriz de n filas y m columnas obtendremos (n,m).
- ndarray.data –> El buffer contiene los elementos actuales del array.
- ndarray.itemsize –> devuelve el tamaño del array en bytes.
- ndarray.size –> Es el número total de elementos del array.
import numpy as np # Importamos numpy como el alias np
miArray = np.arange(10) # Creamos un array de 0 a 9 separados de uno en uno
print(type(miArray))
numdim= miArray.ndim
dim=miArray.shape
tam= miArray.size
byte=miArray.itemsize
- identity(n,dtype) –>Devuelve la matriz identidad, es decir, uma matriz cuadrada nula excepto en su diagonal principal que es unitaria. n es el número de filas (y columnas) que tendrá la matriz y dtype es el tipo de dato. Este argumento es opcional. Si no se establece, se toma por defecto como flotante.
- ones(shape,dtype) –>Crea un array de 1 compuesto de shape elementos.
- zeros(shape, dtype) –>Crea un array de 0 compuesto de “shape” elementos”.
- linspace(start,stop,num,endpoint=True,retstep=False) –>Crea un array con valor inicial start, valor final stop y num elementos.
- empty(shape, dtype) –>Crea un array de ceros compuesto de “shape” elementos” sin entradas.
- meshgrid(x,y) –>Genera una malla a partir de dos los arrays x, y.
- eye(N, M, k, dtype) –>Crea un array bidimensional con unos en la diagonal k y ceros en el resto. Es similar a identity. Todos los argumentos son opcionales. N es el número de filas, M el de columnas y k es el índice de la diagonal. Cuando k=0 nos referimos a la diagonal principal y por tanto eye es similar a identity.
- arange([start,]stop[,step,],dtype=None) –>Crea un array con valores distanciados step entre el valor inicial star y el valor final stop. Si no se establece step python establecerá uno por defecto.
import numpy as np # Importamos numpy como el alias np
g=np.zeros( (3,4) )
print(g)
k=np.linspace( 1, 4, 9 )
print(k)
X,Y=np.meshgrid([1,2,3],[7,9,34])
print(X)
print(Y)
Matrices con Numpy
Suma: se realiza elemento a elemento ya sea arrays o matrices. Ejemplo de suma y el producto por un escalar:
[php]import numpy as np # Importamos numpy como el alias np
a = np.array([[8, 2], [8, 4]])
b=a+a
print(b)
c=a*b
print(c)
Ejemplo de matrices y funciones con álgebra lineal como traspuestas, conjugado, inversa, cálculos de determinantes ecuaciones lineales, autovalores ….
[php] import numpy as np # Importamos numpy como el alias npg=np.matrix( [[3,4,-9], [7,4,-5] ,[1,3,9]] )
print(g)
b=np.matrix( [[-9], [-5] ,[9]] )
print(b)
c=g*b
print(c)
bt=b.T #traspuestas
print(bt)
bh=b.H #traspuestas y conjudaga
print(bh)
gi=g.I #inversa
print(gi)
detgi=np.linalg.det(gi) #calculo del determinante
tragi=np.trace(gi) #calculo de la traza [/php]
Producto matricial y producto elemento a elemento:
[php] import numpy as np # Importamos numpy como el alias npa = np.array([[8, 2], [8, 4]])
b=np.dot(a,a)
print(b)
c=a*a
print(c)
d=np.multiply(a, a)
print(d)
[/php]
Operaciones y Funciones con Numpy
Producto vectorial y producto exterior:
[php]import numpy as np # Importamos numpy como el alias np
a = np.array([[8, 1, 4]])
b= np.array([[3, 7, 4]])
c= np.cross(a, b) # Producto vectorial
print(c)
d=np.outer(a, b) # Producto exterior
print(d)
Ejemplo de funciones trigonométricas y la transformada de Fourier:
[php]import numpy as np # Importamos numpy como el alias np
x=np.linspace(0,1,100)
y=np.sin(x)
print (np.fft.fft(y))
Valores propios y vectores propios
En python podemos realizar un calculo de un valor propio y su vector propio, ustilizando el método .eig() de numpy:
import numpy as np from numpy.linalg import eig A = np.array([[1,2],[3,4]]) valor_y_vector = eig(A) print(valor_y_vector)
El método .eig() devuelve dos tuplas: el primero son los valores propios y el segundo es una matriz cuyas columnas son los dos vectores propios, el resultado por consola es el siguiente:
λ python numpy.py
(array([-0.37228132, 5.37228132]), array([[-0.82456484, -0.41597356],
[ 0.56576746, -0.90937671]]))
Como se que me devuelve una tupla, podemos desempaquetarla y guardarla en variables por separadas:
import numpy as np
from numpy.linalg import eig
A = np.array([[1,2],[3,4]])
valor_y_vector = eig(A)
valores_propios, vectores_propios = eig(A)
print("Matríz de valores propios: ", valores_propios)
print("Matríz de vectores propios: ", vectores_propios)
Al ejecuta obtenemos lo siguientes valores:
λ python numpy.py" Matríz de valores propios: [-0.37228132 5.37228132] Matríz de vectores propios: [[-0.82456484 -0.41597356] [ 0.56576746 -0.90937671]]
La librería Numpy juega un papel importante en la programación científica y la ciencia de datos con Python, es muy importante aprender a utilizar los distintos modulos cientificos que posee esta famosa librería.
➡ ¿Quieres saber mas de Python? Te invitamos al Curso de Python para Principiantes:
[…] ➡ Numpy: Álgebra en Python […]
[…] todas las operaciones en esta sección están principalmente relacionadas con Numpy más que a OpenCV. Conocer bien Numpy es un requerimiento para […]
[…] M se puede crear utilizando la función np.float32 de la librería Numpy (ver curso introductorio). Esta matriz luego se pasa como argumento a la función cv2.warpAffine(). Observa el […]
[…] al ejecutar nuestros programas. La penúltima parte del curso esta enfocada en realizar operaciones de algebra, cálculos y en como graficar los resultados obtenidos. Por último nos enfocaremos en […]
[…] Curso Python desde 0, 9º clase […]
[…] todas las operaciones en esta sección están principalmente relacionadas con Numpy más que a OpenCV. Conocer bien Numpy es un requerimiento para escribir un […]
[…] matriz M se puede crear utilizando la función np.float32 de la librería Numpy (ver curso introductorio). Esta matriz luego se pasa como argumento a la función cv2.warpAffine(). Observa el siguiente […]