Vous êtes sur la page 1sur 6

matrices

March 7, 2020

1 Matrices
Una Matriz o arreglo bidimensional es una colección de datos del mismo tipo, referenciada con
un solo nombre y que para acceder a cada uno de sus datos se necesita dos subíndices que indican
la posición (la fila y la columna) donde se encuentra almacenado un dato, dentro de la colección.
En este caso los datos están organizados en dos dimensiones (Filas y columnas) y por esta
razón se requiere de dos subíndices para ubicar un dato en particular. Uno de los subíndices
indicará la fila donde se encuentra el dato y el otro subíndice la columna
En Python las matrices se puden ver con un vector de vectores... es decir que cada fila de
la matriz es un arreglo unidimensional, por lo tanto una matriz 3x3 se prodria interpretar de la

siguiente manera
Por lo tanto hay dos forma de definir una matriz, la primera es definiendo cada uno de los
elementos de la matriz ejemplo:

m=[ [3.5,2.7,22],[5.4,10.2,0.5],[14.3,9.9,2,2] ]

1
Intro matrices

In [1]: m=[ [3.5,2.7,22],[5.4,10.2,0.5],[14.3,9.9,2,2] ]


print (m)
m[0][1]=111
m[0][0]=m[2][1] + m[2][3]
print (m)

[[3.5, 2.7, 22], [5.4, 10.2, 0.5], [14.3, 9.9, 2, 2]]


[[11.9, 111, 22], [5.4, 10.2, 0.5], [14.3, 9.9, 2, 2]]

Otra forma de definir una matriz es mediante una funcion que reciba como parametros el
numero de filas y numero de columnas y retorne la matriz

m=crearMatriz(3,4)

In [1]: def crearMatriz(nfilas,ncolumnas):


matriz=[]
i=0
while(i<nfilas):
fila=ncolumnas*[0]
matriz.append(fila)
i=i+1
return matriz

In [2]: m=crearMatriz(3,4)
print (m)

2
m[0][1]=111
m[2][1]=10
m[2][3]=4
m[0][0]=m[2][1] + m[2][3]
print (m)

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]


[[14, 111, 0, 0], [0, 0, 0, 0], [0, 10, 0, 4]]

Si se desea ver la matriz organizada por filas y columanas es necesario crear una funcion que
retorne una cadena de caracteres con la matriz organizada

In [6]: def matrizComoCadena(matriz):


nfilas=len(matriz)
ncolumnas=len(matriz[0])
cadena = ''
i=0
while(i<nfilas):
cadena = cadena + '['
k=0
while (k<ncolumnas):
cadena = cadena +'{:>5s}'.format(str(matriz[i][k]))
k=k+1
cadena = cadena + ']\n'
i=i+1
return cadena

In [7]: m=crearMatriz(3,4)
print(matrizComoCadena(m))
m[0][1]=111
m[2][1]=10
m[2][3]=4
m[0][0]=m[2][1] + m[2][3]
print(matrizComoCadena(m))

[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]

[ 14 111 0 0]
[ 0 0 0 0]
[ 0 10 0 4]

Para hacer pruebas es util generar matrices con numeros aleatorios y por lo tanto se puede
crear una funcion que defina una matriz de cualquier tamaño llenandola de numeros aleatorios
por ejemplo entre un rango dado

3
from random import randint
print(randint(10, 20))

In [8]: # para poder usar el generador de aleatorios hay que importar la funcion
# randint de la libreria random
from random import randint
# la funcion recibe cuatro datos como parametros
# nfilas es el numero de filas a crear
# ncolumnas es el numero de columnas a crear
# desde y hasta representan el rango de numeros que se pueden generar
def crearMatrizAleatoria(nfilas,ncolumnas,desde, hasta):
matriz=crearMatriz(nfilas,ncolumnas)
i=0
while(i<nfilas):
k=0
while (k<ncolumnas):
matriz[i][k]=randint(desde, hasta)
k=k+1
i=i+1
return matriz

In [10]: m=crearMatrizAleatoria(3,5,0,10)
print(matrizComoCadena(m))

[ 3 5 10 9 9]
[ 2 7 8 10 3]
[ 5 4 7 5 9]

In [12]: # sumar dos matrices y retornar la matriz suma


# a y b son dos matrices del mismo tamaño
def sumarMatrices(a,b):
nfilas=len(a)
ncolumnas=len(a[0])
rta=crearMatriz(nfilas,ncolumnas)
i=0
while(i<nfilas):
k=0
while(k<ncolumnas):
rta[i][k]=a[i][k] + b [i][k]
k=k+1
i=i+1
return rta

In [13]: x=crearMatrizAleatoria(3,2,-5,10)
y=crearMatrizAleatoria(3,2,0,100)
w=sumarMatrices(x,y)

4
print("Primera matriz")
print(matrizComoCadena(x))
print("Segunda matriz")
print(matrizComoCadena(y))
print("Matriz resultante de la suma")
print(matrizComoCadena(w))

Primera matriz
[ 3 -1]
[ -3 4]
[ 3 8]

Segunda matriz
[ 61 35]
[ 26 29]
[ 4 50]

Matriz resultante de la suma


[ 64 34]
[ 23 33]
[ 7 58]

De igual forma Para facilitar usar matrices, es util traer la información de un archivo de texto y
almacenarla en una matriz en memoria... Este proceso se le conoce comunmente como entrada de
datos (leer datos), que no siempre se hace desde archivos, sino que frecuentemente se hace desde
el teclado pero es poco practico para volumenes de datos...

In [14]: def cargarMatriz(nombrearchivo):


archivo = open( nombrearchivo )
x = []
# linea corresponde a cada cadena de texto en el archivo...
# hasta encontrar un retorno... es decir una linea del archivo de texto
for linea in archivo.readlines():
#La funcion split() convierte una cadena en un vector de cadenas
# utilizando como separador los espacios...
y = [float(dato) for dato in linea.split()]
x.append( y )
archivo.close()
return x

In [16]: m=cargarMatriz("prueba.txt")
print(m)
print(matrizComoCadena(m))

[[5.3, 6.7, 2.5], [6.2, 7.4, 9.1]]


[ 5.3 6.7 2.5]
[ 6.2 7.4 9.1]

5
In [17]: def leerMatrizTeclado(nfilas,ncolumnas):
matriz=crearMatriz(nfilas,ncolumnas)
i=0
while(i<nfilas):
k=0
while (k<ncolumnas):
mensaje="dato[%d][%d]: "%(i,k)
# la funcion input() captura un dato por teclado
# imprimiendo un mensaje para que quien da el dato sepa de que se trata
matriz[i][k]= float(input(mensaje))
k=k+1
i=i+1
return matriz

In [19]: m=leerMatrizTeclado(2,2)
print(matrizComoCadena(m))

[ 1.0 1.0]
[ 1.0 2.0]

Vous aimerez peut-être aussi