En este artículo realizaremos un ejercicio sobre el producto escalar. Recordemos que el producto escalar es la suma de los componentes de dos o más vectores de dos o más dimensiones.
Ejercicio sobre el producto escalar
Un sensor consta de los siguientes componentes:
- CPU
- Radio
- Sensor de temperatura
- Memoria
- LCD
Este sensor va a colocarse en un lugar donde no hay acceso a energía eléctrica, por lo que usará paneles solares para alimentarse. Por ello, necesitamos saber la cantidad de energía que consumen todos los componentes.
Imagina que conocemos el consumo eléctrico de cada componente:
consumo = {memoria: 0.06W, radio: 0.06W, sensor: 0.004W, CPU: 0.0025W, LCD: 0.03W}
Estos datos se han tomado de forma experimental y anotamos el tiempo que estuvo trabajando cada componente de forma continuada.
duracion = {memoria: 1.0s, radio: 0.2s, sensor: 0.05s, CPU: 1.0s, LCD: 1.2s}
Debemos calcular el total de energía consumida en julios:
total energia = consumo.duración
Primero debemos escribir y extraer de ambos diccionarios el consumo y la duración de los respectivos valores:
#Ejercicio sobre el producto escalar
consumo = {"memoria": "0.06W",
"radio": "0.06W",
"sensor": "0.004W",
"CPU": "0.0025W",
"LCD": "0.03W"}
duración = {"memoria": "1.0s",
"radio": "0.2s",
"sensor": "0.05s",
"CPU": "1.0s",
"LCD": "1.2s"}
Aquí ya tenemos los valores establecidos. Los anteriores son diccionarios y esto podemos corroborarlo con un comando muy sencillo, el type. Veamos:
print (type (consumo))
<class ‘dict’>
Entonces, lo primero que debemos hacer es extraer los valores de ambos diccionarios usando values (). Estos se pueden extraer al mismo tiempo porque están en orden:
#Ejercicio sobre el producto escalar
cons_list = list (consumo.values())
duracion_list = list (duracion.values())
Aquí no nos debería aparecer nada porque lo único que estamos haciendo es extraer los valores. Para que estos sean visibles, tendríamos que imprimirlos:
#Ejercicio sobre el producto escalar
print (cons_list)
print (duracion_list)
[‘0.06W’, ‘0.06W’, ‘0.004W’, ‘0.0025W’, ‘0.03W’]
[‘1.0s’, ‘0.2s’, ‘0.05s’, ‘1.0s’, ‘1.2s’]
#Ejercicio sobre el producto escalar
a = '0.06W'
a [:-1]
‘0.06’
Si nos fijamos bien, los elementos de ambas lista son de tipo string y debemos operar con valores numéricos. Para ello debemos eliminar sus unidades W o s y convertirlos a variables de tipo float. Eso lo podemos hacer utilizando un bucle, donde podemos iterar sobre ambas listas al mismo tiempo. En este caso emplearemos el operador zip.
#Ejercicio sobre el producto escalar
cons_list_float = [ ]
dur_list_float = [ ]
for c, d in zip (cons_list, duracion_list):
print (c, d)
Si imprimimos esto, nos da los elementos de cada lista:
0.06W 1.0s
0.06W 0.2s
0.004W 0.05s
0.0025W 1.0s
0.03W 1.2s
Por ello, dentro del bucle convertiremos los valores en tipo float.
#Ejercicio sobre el producto escalar
cons_list_float = [ ]
dur_list_float = [ ]
for c, d in zip (cons_list, duracion_list):
cons_list_float.append (float (c [:-1]))
dur_list_float.append (float (d [:-1]))
print (cons_list_float)
print (dur_list_float)
[0.06, 0.06, 0.004, 0.0025, 0.03]
[1.0, 0.2, 0.05, 1.0, 1.2]
#Ejercicio sobre el producto escalar
type (cons_list_float [0])
float
Ahora mismo ya tenemos dos listas que podemos convertir en array. Si pensamos bien en este problema, simplemente nos están pidiendo que sumemos el resultado de calcular el producto del consumo de cada componente por su duración, es decir, que calculemos el producto escalar entre ambos vectores.
#Ejercicio sobre el producto escalar
total = np.array (cons_list_float) @ np.array (dur_list_float)
print ("Total energía consumida: ", total)
Total energía consumida: 0.110699999999999999
Ahora que hemos visto cómo funciona el producto escalar en Python, podemos seguir aprendiendo sobre Big Data, una de las disciplinas más demandadas hoy en día y con mejores salarios. Para lograrlo tenemos el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva e íntegra en la que podrás adquirir todos los conocimientos teóricos y prácticos necesarios para incursionar en el mercado laboral de forma rápida y eficiente. Anímate a seguir cambiando tu futuro y, si quieres convertirte en un experto, ¡solicita más información ahora!