Una matriz 4×5.
Cuatro filas, cinco columnas.
$$A_{(4×5)} =
\begin{pmatrix}
a_{11} & a_{12} & a_{13} & a_{14} & a_{15} \\
a_{21} & a_{22} & a_{23} & a_{24} & a_{25} \\
a_{31} & a_{32} & a_{33} & a_{34} & a_{35} \\
a_{41} & a_{42} & a_{43} & a_{44} & a_{45} \\
\end{pmatrix}
$$
def imprimir(matriz):
for f in range(len(matriz)):
linea = ""
for c in range(len(matriz[f])):
linea += str(matriz[f][c]) + " "
print(linea)
if __name__ == "__main__":
matriz = [
[1,3,4],
[4,5,6],
[7,8,9]
]
imprimir(matriz)
1 3 4 4 5 6 7 8 9
Ejercicio
En álgebra la traza es la suma de la diagonal principal de una matriz.
Generar una matriz de números aleatorios y calcular su traza.
zip
¶Consideremos la siguiente matriz 3×4.
$$A_{(3×4)} =
\begin{pmatrix}
a_{11} & a_{12} & a_{13} & a_{14} \\
a_{21} & a_{22} & a_{23} & a_{24} \\
a_{31} & a_{32} & a_{33} & a_{34}
\end{pmatrix} =
\begin{pmatrix}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12
\end{pmatrix}
$$
matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]
m = list(zip(*matrix))
print(m) # m es una lista de tuplas
print()
for i in range(len(m)):
print(*m[i])
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)] 1 5 9 2 6 10 3 7 11 4 8 12
Su transpuesta es $A^{t}$ de dimensión 4×3.
$$A^{t} =
\begin{pmatrix}
1 & 5 & 9 \\
2 & 6 & 10 \\
3 & 7 & 11 \\
4 & 8 & 12
\end{pmatrix}
$$
# Transponer matrices
from random import seed, randint
seed()
# inicializamos la matriz m de dimensines 4x5
m = [[None]*5 for _ in range(4)]
# generamos aleatoriamente la matriz m
for i in range(4):
for j in range(5):
m[i][j] = randint(1,9)
# imprimimos la matriz m
for i in range(4):
for j in range(5):
print(m[i][j],end=" ")
print()
# inicializamos la matriz transpuesta t
t = [[None]*len(m) for _ in range(len(m[0]))]
for i in range(5):
for j in range(4):
t[i][j] = m[j][i]
print()
for i in range(5): # esta forma de imprimir una matriz
print(*t[i]) # es más sencilla que la anterior
6 9 2 9 2 6 8 9 4 1 9 1 4 9 9 3 1 8 7 4 6 6 9 3 9 8 1 1 2 9 4 8 9 4 9 7 2 1 9 4
Podemos copiar una matriz de dos dimensiones sin necesidad de llamar a la librería copy para usar la función deepcopy.
from random import seed, randint
seed()
# inicializamos la matriz m de dimensines 4x4
m = [[None]*4 for _ in range(4)]
# generamos aleatoriamente la matriz m
for i in range(4):
for j in range(4):
m[i][j] = randint(1,9)
# imprimimos la matriz m
print("Matriz m")
for i in range(4):
for j in range(4):
print(m[i][j],end=" ")
print()
print()
# creamos la matriz cm que es una copia de m
cm = [row[:] for row in m]
# alteramos el primer valor de m
m[0][0] = 0
# imprimimos m con su alteración
print("Matriz m con el primer valor alterado")
for i in range(4): # este sistema es mejor
print(*m[i]) # para imprimir una matriz sin comas ni corchetes
print()
# imprimimos la copia y vemos que no se ha alterado
print("La matriz copia de m es independiente, no tiene el valor alterado")
for i in range(4):
print(*cm[i])
Matriz m 7 8 3 5 2 7 5 3 6 8 5 9 3 8 2 8 Matriz m con el primer valor alterado 0 8 3 5 2 7 5 3 6 8 5 9 3 8 2 8 La matriz copia de m es independiente, no tiene el valor alterado 7 8 3 5 2 7 5 3 6 8 5 9 3 8 2 8