Una matriz es una tabla de números
Una matriz es una tabla rectangular de números, ordenada en filas y columnas. Multiplicar una matriz por un vector da otro vector, y multiplicar dos matrices da otra matriz.
Así se calculan a la vez los totales de muchas tiendas y así trabajan las redes neuronales. Al acabar sabrás multiplicar a mano y comprobar si dos formas encajan.
Al final de esta lección
Nota
Puedo multiplicar una matriz por un vector y por otra matriz.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Matriz | una tabla rectangular de números |
| Fila | una línea horizontal de la matriz |
| Columna | una línea vertical de la matriz |
| Forma | el número de filas por el de columnas |
| Matriz identidad | la matriz que deja los vectores como están |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La forma de una matriz: filas por columnas
Una matriz de dos filas y tres columnas tiene forma 2 por 3. Se dice primero las filas y después las columnas.
Ejemplo: dos tiendas piden tres productos. Cada fila es una tienda y cada columna es un producto. El número de una casilla es cuántas unidades pide esa tienda de ese producto.
Ejemplo resuelto: pedidos de dos tiendas
| Tienda | Producto 1 | Producto 2 | Producto 3 |
|---|---|---|---|
| Tienda A (fila 1) | 2 | 1 | 0 |
| Tienda B (fila 2) | 0 | 3 | 1 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Matriz por vector: un producto por fila
Para multiplicar una matriz por un vector, calcula el producto escalar de cada fila con el vector. Cada producto es una componente del resultado.
Si los precios son 3, 2 y 5 euros, el total de cada tienda es la fila por los precios. Por eso el vector debe tener tantas componentes como columnas tiene la matriz.
Ejemplo resuelto: el total de cada tienda
| Fila | Cuenta | Total (euros) |
|---|---|---|
| Tienda A: [2, 1, 0] | 2 por 3 + 1 por 2 + 0 por 5 = 6 + 2 + 0 | 8 |
| Tienda B: [0, 3, 1] | 0 por 3 + 3 por 2 + 1 por 5 = 0 + 6 + 5 | 11 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Calcula los totales con dos bucles
# Cuántas unidades de cada producto pide cada tienda.
pedidos = [[2, 1, 0], [0, 3, 1]]
precios = [3, 2, 5]
for fila in pedidos:
total = 0
for j in range(len(fila)):
total = total + fila[j] * precios[j]
print("total de la tienda:", total)
# Cambia el precio del tercer producto a 1 y vuelve a ejecutar.
# ¿Qué tienda baja más su total?
La misma cuenta con NumPy
docker exec jupyter python3 -c "import numpy as np; M=np.array([[2,1,0],[0,3,1]]); p=np.array([3,2,5]); print((M@p).tolist())"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Matriz por matriz: casilla a casilla
Para multiplicar A por B, rellena el resultado casilla a casilla. La casilla (i, j) es el producto escalar de la fila i de A con la columna j de B.
Para que encajen, A debe tener tantas columnas como filas tiene B. Una matriz de 2 por 3 por otra de 3 por 4 da una de 2 por 4. Salen las filas de A y las columnas de B.
Ejemplo resuelto: A por B
| Casilla | Fila de A | Columna de B | Cuenta | Valor |
|---|---|---|---|---|
| 1, 1 | [1, 2] | [0, 1] | 1 por 0 + 2 por 1 | 2 |
| 1, 2 | [1, 2] | [1, 0] | 1 por 1 + 2 por 0 | 1 |
| 2, 1 | [3, 4] | [0, 1] | 3 por 0 + 4 por 1 | 4 |
| 2, 2 | [3, 4] | [1, 0] | 3 por 1 + 4 por 0 | 3 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
A por B y B por A
docker exec jupyter python3 -c "import numpy as np; A=np.array([[1,2],[3,4]]); B=np.array([[0,1],[1,0]]); print((A@B).tolist(), (B@A).tolist())"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error muy común
Advertencia
Mucha gente cree que A por B es igual que B por A, como pasa con los números. No es así. Con las matrices de arriba salen [[2, 1], [4, 3]] y [[3, 4], [1, 2]]. Respeta siempre el orden en que multiplicas.
Para ir más lejos: la matriz identidad
La matriz [[1, 0], [0, 1]] se llama identidad. Multiplicar por ella deja cualquier vector o matriz igual que estaba, como multiplicar un número por 1.
Compruébalo con [[1, 0], [0, 1]] por [5, 7] a mano. Después prueba con [[1, 2], [3, 4]] por la identidad y escribe lo que ves.