¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Multiplicar matrices y vectores

Después de esta lección: Puedo multiplicar una matriz por un vector y por otra matriz.

Lección de 60 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

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

PalabraQué significa
Matrizuna tabla rectangular de números
Filauna línea horizontal de la matriz
Columnauna línea vertical de la matriz
Formael número de filas por el de columnas
Matriz identidadla 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

TiendaProducto 1Producto 2Producto 3
Tienda A (fila 1)210
Tienda B (fila 2)031

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

FilaCuentaTotal (euros)
Tienda A: [2, 1, 0]2 por 3 + 1 por 2 + 0 por 5 = 6 + 2 + 08
Tienda B: [0, 3, 1]0 por 3 + 3 por 2 + 1 por 5 = 0 + 6 + 511

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Calcula los totales con dos bucles

Código: python
# 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

Comando
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

CasillaFila de AColumna de BCuentaValor
1, 1[1, 2][0, 1]1 por 0 + 2 por 12
1, 2[1, 2][1, 0]1 por 1 + 2 por 01
2, 1[3, 4][0, 1]3 por 0 + 4 por 14
2, 2[3, 4][1, 0]3 por 1 + 4 por 03

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

A por B y B por A

Comando
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.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.