Sesión 10: Matrices y organización tabular de información¶
Objetivo¶
Representar y procesar datos organizados en filas y columnas, incluyendo operaciones matemáticas básicas con matrices.
Producto de la sesión¶
Elabora un programa que recorra una matriz y obtenga resúmenes por filas o columnas, o que aplique operaciones matriciales básicas mostrando resultados claros.
Resultado esperado¶
Construye un programa que procese matrices mediante recorridos bidimensionales, consultas, actualizaciones u operaciones como transpuesta, producto por escalar, producto de matrices e inversa 2x2, organizando la solución en entrada, proceso y salida.
Alcance de la sesión¶
- Uso de matrices para representar información en filas y columnas.
- Aplicación de recorridos bidimensionales, consulta y actualización de datos.
- Introducción a transpuesta, producto por escalar, producto de matrices e inversa de matrices 2x2.
- Resolución de ejercicios guiados y práctica autónoma.
- Verificación de resultados con casos de prueba.
Base conceptual de la sesión¶
- matrices
- filas
- columnas
- recorrido bidimensional
- consulta y actualización
- transpuesta
- producto por escalar
- producto de matrices
- inversa 2x2
1. Matrices
Concepto Organizan datos en filas y columnas para representar información tabular.
Elementos o clasificación Filas, columnas y posiciones por índice.
Criterio de uso Se usan cuando la información tiene dos dimensiones naturales, como filas y columnas, estudiantes y notas, días y productos.
Ejemplo de aplicación
matriz[1][0]
2. Filas
Concepto Una fila es un conjunto horizontal de datos relacionados dentro de una matriz o tabla. Suele representar un registro completo, como un estudiante, un producto o un día.
Elementos o clasificación Filas de datos numéricos, textuales o mixtos, cada una asociada a un registro.
Criterio de uso Una fila agrupa datos de un mismo registro o unidad de análisis; recorrer filas permite obtener resúmenes por registro.
Ejemplo de aplicación Sumar todos los valores de una fila para obtener el total de un estudiante.
3. Columnas
Concepto Una columna es un conjunto vertical de datos del mismo tipo o significado dentro de una tabla. Permite analizar una característica común en varios registros.
Elementos o clasificación Columnas de atributos, columnas de totales y columnas de consulta.
Criterio de uso Una columna agrupa el mismo atributo en varios registros; recorrer columnas permite comparar o totalizar una característica común.
Ejemplo de aplicación Sumar una columna para conocer el total de ventas de un producto.
4. Recorrido Bidimensional
Concepto Es el proceso de visitar los elementos de una matriz usando dos niveles de recorrido: uno para las filas y otro para las columnas.
Elementos o clasificación Recorrido por filas, recorrido por columnas y recorrido por celda.
Criterio de uso Requiere normalmente dos ciclos: uno para filas y otro para columnas. El orden del recorrido debe coincidir con el análisis solicitado.
Ejemplo de aplicación Usar un ciclo para filas y otro para columnas al procesar una tabla.
5. Consulta Y Actualización
Concepto Consiste en acceder a una posición para leer su contenido y, cuando el problema lo exige, modificar el dato almacenado.
Elementos o clasificación Consulta por posición, actualización de celda y verificación de límites.
Criterio de uso Consultar recupera un valor existente y actualizar modifica una posición específica sin alterar el resto de la estructura.
Ejemplo de aplicación
matriz[0][1] = 15
6. Transpuesta
Concepto Es una operación que intercambia filas por columnas en una matriz.
Elementos o clasificación Transpuesta de matrices cuadradas y rectangulares.
Criterio de uso Se aplica cuando conviene reorganizar la información para leerla por columnas, comparar estructuras o preparar otros cálculos matriciales.
Ejemplo de aplicación
transpuesta = [[matriz[j][i] for j in range(len(matriz))] for i in range(len(matriz[0]))]
7. Producto Por Escalar
Concepto Consiste en multiplicar cada elemento de la matriz por un mismo número.
Elementos o clasificación Escalado positivo, negativo o nulo.
Criterio de uso Es útil para ampliar, reducir o transformar proporcionalmente todos los valores de una matriz.
Ejemplo de aplicación
resultado = [[2 * valor for valor in fila] for fila in matriz]
8. Producto De Matrices
Concepto Combina dos matrices multiplicando filas de la primera por columnas de la segunda.
Elementos o clasificación Producto válido cuando el número de columnas de la primera coincide con el número de filas de la segunda.
Criterio de uso Se usa para combinar relaciones entre datos, transformar coordenadas o encadenar cálculos matriciales.
Ejemplo de aplicación Multiplicar una matriz 2x2 por otra 2x2 usando sumas de productos fila-columna.
9. Inversa 2x2
Concepto Es la matriz que deshace el efecto de una matriz 2x2 cuando su determinante es distinto de cero.
Elementos o clasificación Matrices 2x2 invertibles y no invertibles.
Criterio de uso Solo existe si el determinante es diferente de cero. En este nivel conviene trabajarla en matrices 2x2 para comprender la regla.
Ejemplo de aplicación
det = a * d - b * c
Síntesis de la sesión Para resolver ejercicios, no basta con escribir instrucciones en Python. Es necesario reconocer los datos, nombrarlos correctamente, elegir operaciones o estructuras de control apropiadas y comprobar el resultado con casos de prueba.
| Aspecto | Pregunta guía |
|---|---|
| Entrada | ¿Qué datos necesita recibir el programa? |
| Proceso | ¿Qué cálculos, decisiones o repeticiones transforman los datos? |
| Salida | ¿Qué resultado debe mostrarse y con qué formato? |
| Prueba | ¿Con qué casos se demuestra que la solución funciona? |
Actividad práctica¶
La sesión se desarrolla con exploración inicial, ejercicios guiados, ejercicios de aplicación y una tarea tipo competencia.
Arquitectura¶
Entrada -> Proceso -> Salida
- Entrada: matriz o tabla con datos organizados en filas y columnas.
- Proceso: recorrido por filas, columnas o celdas para consultar, actualizar, resumir u operar matrices.
- Salida: totales, promedios, transpuestas, productos u otros resultados obtenidos al procesar la matriz.
Mini laboratorio¶
Observa cómo calcular la transpuesta y el producto por escalar de una matriz pequeña antes de resolver problemas más completos.
matriz = [[1, 2], [3, 4]]
transpuesta = [[matriz[j][i] for j in range(len(matriz))] for i in range(len(matriz[0]))]
doble = [[2 * valor for valor in fila] for fila in matriz]
print('Matriz:', matriz)
print('Transpuesta:', transpuesta)
print('Producto por escalar:', doble)
Ejercicio 1: Asistencia por estudiante¶
Calcularemos el total de asistencia por estudiante usando una matriz simple de 0 y 1.
Resolución guiada
- Comprender: explica con una oración completa cuál es el resultado que debe obtener el programa.
- Entradas: enumera cada dato de entrada e indica su tipo de dato esperado.
- Procesos:
- describe la operación, condición, recorrido o función principal que usarás para resolver el problema
- ordena las acciones principales antes de escribir el código
- prepara cómo obtendrás el resultado final antes de mostrarlo
- Salidas: especifica la salida esperada y el formato con que se debe mostrar.
- Pruebas:
- caso normal: usa datos habituales para comprobar que el resultado esperado se cumpla
- caso límite: prueba el valor exacto donde cambia la regla principal
- caso excepcional: revisa qué sucede con una entrada vacía, inválida o fuera de rango
- Código:
asistencia = [
[1, 1, 0],
[1, 0, 1],
[1, 1, 1]
]
for fila in range(len(asistencia)):
total = 0
for columna in range(len(asistencia[fila])):
total += asistencia[fila][columna]
print('Estudiante', fila + 1, ':', total, 'asistencias')
Ejercicio 2: Suma por fila¶
Calcula la suma de cada fila de una matriz de 3x3 y muestra el resultado por fila.
Resolución guiada
- Comprender: el programa debe resolver este problema: Calcula la suma de cada fila de una matriz de 3x3 y muestra el resultado por fila
- Entradas: identifica filas y columnas
- Procesos:
- define dónde reinicias el total de cada fila
- ordena las operaciones o decisiones antes de escribir el código
- prepara el resultado final que mostrarás al usuario
- Salidas: muestra el resultado solicitado por el enunciado con mensajes claros y ordenados.
- Pruebas:
- prueba con una matriz de números pequeños
- caso límite: prueba el valor exacto donde cambia la regla, condición o cálculo principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for fila in range(len(matriz)):
total = 0
for columna in range(len(matriz[fila])):
total += matriz[fila][columna]
print('Fila', fila + 1, total)
Ejercicio 3: Promedio por estudiante¶
Dada una tabla de notas, calcula el promedio de cada estudiante.
Resolución guiada
- Comprender: el programa debe resolver este problema: Dada una tabla de notas, calcula el promedio de cada estudiante
- Entradas: identifica qué representa cada fila
- Procesos:
- calcula suma y promedio por estudiante. valida con notas fáciles de dividir
- ordena las operaciones o decisiones antes de escribir el código
- prepara el resultado final que mostrarás al usuario
- Salidas: muestra el resultado solicitado por el enunciado con mensajes claros y ordenados.
- Pruebas:
- caso normal: usa datos habituales para comprobar que el resultado principal sea correcto
- caso límite: prueba el valor exacto donde cambia la regla, condición o cálculo principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
notas = [[15, 14, 16], [11, 13, 12], [18, 17, 19]]
for fila in range(len(notas)):
total = 0
for columna in range(len(notas[fila])):
total += notas[fila][columna]
promedio = total / len(notas[fila])
print('Estudiante', fila + 1, 'promedio:', round(promedio, 2))
Ejercicio 4: Total por columna¶
Calcula el total de cada columna en una matriz de ventas por día y producto.
Resolución guiada
- Comprender: cada columna representa un producto y se debe sumar su venta en todos los días.
- Entradas: una matriz donde las filas son días y las columnas son productos.
- Procesos:
- recorre primero las columnas
- dentro de cada columna, recorre todas las filas
- acumula el total de cada producto antes de mostrarlo
- Salidas: total por columna o producto.
- Pruebas: usa una matriz con valores pequeños para comprobar los totales mentalmente.
- Código:
ventas = [
[10, 5, 8],
[7, 9, 4],
[6, 3, 12]
]
for columna in range(len(ventas[0])):
total = 0
for fila in range(len(ventas)):
total += ventas[fila][columna]
print('Producto', columna + 1, 'total:', total)
Ejercicio 5: Ventas por fila y total general¶
Dada una tabla de ventas por día y producto, calcula el total por fila y el total general.
Resolución guiada
- Comprender: redacta con tus palabras qué debe resolver la tarea.
- Entradas: define qué datos ingresan y el tipo que tendrán.
- Procesos:
- describe la estrategia, fórmula, condición, estructura o algoritmo que piensas aplicar
- ordena las acciones principales antes de escribir el código
- prepara cómo obtendrás el resultado final antes de mostrarlo
- Salidas: indica con claridad qué resultado debe mostrar o registrar la solución.
- Pruebas:
- caso normal: usa datos habituales para comprobar que la solución funcione
- caso límite: prueba el valor exacto donde cambia la regla principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
ventas = [
[12, 15, 10],
[8, 11, 9],
[14, 7, 13]
]
total_general = 0
for fila in range(len(ventas)):
total_fila = 0
for columna in range(len(ventas[fila])):
total_fila += ventas[fila][columna]
total_general += total_fila
print('Fila', fila + 1, total_fila)
print('Total general:', total_general)
Ejercicio 6: Operaciones matriciales básicas¶
Dadas dos matrices 2x2, calcula la transpuesta de la primera, su producto por un escalar, el producto entre ambas y la inversa de la primera si existe.
Resolución guiada
- Comprender: identifica qué operación matricial se pide en cada caso y qué condición debe cumplirse para la inversa.
- Entradas: dos matrices 2x2 y un escalar.
- Procesos:
- calcula la transpuesta intercambiando filas por columnas
- multiplica cada elemento de la matriz por el escalar
- aplica el producto fila-columna para multiplicar ambas matrices
- halla el determinante y verifica si es distinto de cero antes de calcular la inversa
- Salidas: transpuesta, producto por escalar, producto de matrices e inversa o mensaje de que no existe.
- Pruebas: usa una matriz con determinante distinto de cero y otra con determinante cero.
- Código:
A = [[1, 2], [3, 4]]
B = [[2, 0], [1, 2]]
escalar = 3
transpuesta_A = [[A[j][i] for j in range(len(A))] for i in range(len(A[0]))]
producto_escalar = [[escalar * valor for valor in fila] for fila in A]
producto_AB = [[0, 0], [0, 0]]
for i in range(2):
for j in range(2):
for k in range(2):
producto_AB[i][j] += A[i][k] * B[k][j]
a, b = A[0]
c, d = A[1]
determinante = a * d - b * c
print('Transpuesta:', transpuesta_A)
print('Producto por escalar:', producto_escalar)
print('Producto A x B:', producto_AB)
if determinante != 0:
inversa = [[d / determinante, -b / determinante], [-c / determinante, a / determinante]]
print('Inversa de A:', inversa)
else:
print('A no tiene inversa')
Aprendizaje autónomo¶
Desarrolle el producto de la sesión resolviendo una o más de las siguientes actividades mediante un programa con matrices claramente identificables.
1 Calcula la transpuesta y el producto por escalar de una matriz pequeña.
# Actividad 1
2 Multiplica dos matrices 2x2 y muestra el resultado final indicando qué fila y columna intervienen en cada posición.
# Actividad 2
3 Calcula la inversa de una matriz 2x2 cuando el determinante sea distinto de cero y muestra un mensaje si no existe.
# Actividad 3
Evaluación del producto de la sesión¶
Lista de cotejo para revisar el producto elaborado por el estudiante:
- Identifica correctamente filas, columnas y datos de entrada de la matriz.
- Usa recorridos bidimensionales cuando el problema lo requiere.
- Consulta o actualiza posiciones de la matriz de manera adecuada.
- Calcula totales, promedios u otros resultados solicitados con precisión.
- Aplica transpuesta, producto por escalar, producto de matrices o inversa 2x2 cuando el problema lo solicita.
- Presenta resultados claros, ordenados y correctos según lo solicitado.
- Verifica el programa con casos de prueba antes de entregarlo.
- Entrega la evidencia del trabajo realizado.