Matrices usando numpy
En python existen muchas librerias que están destinadas a facilitarnos la vida, una de estas librerías es numpy, que en este caso la usaremos con el fin de crear, visualizar y manipular matrices. Lo primero que tenemos es importar esta librería, para esto usamos la línea de código:
import numpy as np (o el nombre que ustedes quieran)
Con esta línea lo que hacemos es “traer” a nuestro código todos los métodos de la librería numpy (que no solo sirve para matrices)
1. Crear una matriz vacía con numpy: Como se ha mencionado antes, suponemos que por alguna razón necesitamos crear una matriz inicialmente vacía, recordemos que crear una matriz vacía no significa que no tenga nada, significa que los valores que se le dan a cada espacio en memoria reservado para las posiciones de la matriz tienen “basura”, que son dicho de alguna manera valores que ya tenía esa posición de memoria y no representan nada.
Para crear una matriz vacía usando numpy se hace uso de la siguiente instrucción:
np.empty(n,m) # esto retorna una matriz vacía de n filas y m columnas
Ejemplo:
import numpy as np
Matriz=np.empty((6,3)) # El paréntesis doble es necesario
print (Matriz) # Podemos ver que ya numpy se encargar de imprimir en formato matricial
>>[ [6.91010370e-310 6.91010572e-310 6.91010441e-310]
[6.91010441e-310 6.91010442e-310 6.91009836e-310]
[6.91010441e-310 6.91010446e-310 6.91010441e-310]
[6.91010064e-310 6.91010442e-310 6.91009707e-310]
[6.91009707e-310 6.91010446e-310 6.91010446e-310]
[6.91010439e-310 6.91010572e-310 6.91010436e-310]]
#Como se dijo antes la matriz no está literalmente vacía, pero como se puede ver tiene valores que no representan nada, por eso se les denomina “basura”
Ejemplo 1:
#Matriz iniciada en 0
import numpy as np
n=m=4
Matriz0=np.zeros((n,m))
print (Matriz0)
>> [[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]
[ 0. 0. 0. 0.]]
#Matriz identidad
import numpy as np
n=m=4
MatrizI=np.identity(n)
print(MatrizI)
>>[[ 1. 0. 0. 0.]
[ 0. 1. 0. 0.]
[ 0. 0. 1. 0.]
[ 0. 0. 0. 1.]]
Ejemplo 4:
#Matriz iniciada en 1
import numpy as np
n=m=4
Matriz1=np.ones((n,m))
print (Matriz1)
>>[[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
#Matriz diagonal
import numpy as np
n=m=4
MatrizD=np.eye(n,m,k = -1)
print (MatrizD)
>>[[ 0. 0. 0. 0.]
[ 1. 0. 0. 0.]
[ 0. 1. 0. 0.]
[ 0. 0. 1. 0.]]
#Notemos que con k=-1 la diagonal se desplaza hacia abajo, si se colocara k=1 se desplazará hacia arriba una vez.
#Copiar tamaño de una matriz
import numpy as np
n=m=4
Matriz1=np.ones((n,m)) # se crea una matriz de 1s
Mlike=np.zeros_like(Matriz1) # se crea una matriz de 0s con el mismo tamaño de Matriz1
print (Mlike)
#salida
Ejemplo 2:
Ejemplo 3:
import numpy as np
No_Filas=4
No_Columnas=4
Matriz=[[None]*No_Columnas for i in range (No_Filas)] #matriz vacía
Mcopy=np.copy(Matriz)
print (Matriz)
#salida
>> [[None None None None]
[None None None None]
[None None None None]
[None None None None]]
Una gran ventaja de la librería numpy es que funciones como np.copy(Matriz) o _like(Matriz) pueden recibir la matriz en el formato de lista,hacer su respectiva operación y dejarlo todo en formato matricial.
Ejemplo:
2.Inicializar matriz: Veremos que la librería numpy tiene métodos muy simples que me permiten darle valores iniciales a una matriz de dimensiones nxm. Las más usadas son:
np.zeros((n,m )) #Matriz nxm(n filas y m columnas) inicializada en 0
np.ones ((n,n)) #Matriz nxm (n filas y m columnas) inicializada en 1
np.identity(n) #Matriz identidad nxn
np.eye(n,m,k=entero) #Matriz nxm con “1” en la diagonal (k=0 es la diagonal principal)
Veamos un ejemplo simple del uso de estas 4 instrucciones
La librería numpy tiene un sufijo muy útil llamado “_like(Matriz)”, este sufijo me permite “copiar” una matriz, NO es una copia en todo el sentido de la palabra, “_like()” copia el tamaño y la llena según la instrucción antes del sufijo.
Ejemplo:
Si lo que queremos en copiar la matriz literalmente podemos usar la instrucción np.copy(matriz)
3.Matrices con numpy a partir de listas: Como se ha visto hasta ahora, cuando se crea una matriz usando numpy y queremos imprimir o copiar una matriz nos ahorramos el trabajo de “jugar” con los ciclos y los formatos de impresión, ya que numpy se encarga de eso, pero, ¿qué pasaría si creo mi matriz a partir de listas y quiero copiarla usando la librería numpy? Ó ¿Si me entregan la matriz en forma de lista como hago para imprimirla fácilmente en formato matricial(como con numpy)?.
Podemos hacer que una matriz en forma de lista se “vea” en formato matricial usando la instrucción np.matrix(Matriz) .
Ejemplo:
#De lista a matriz
import numpy as np
No_Filas=4
No_Columnas=4
Matriz=[[None]*No_Columnas for i in range (No_Filas)] #matriz vacía
Matriz=np.matrix(Matriz)
print (Matriz)
#salida
>> [[None None None None]
[None None None None]
[None None None None]
[None None None None]]