Calcule el producto escalar de dos listas en Python

Isaac Tony 30 enero 2023
  1. Usando la función sum() y zip() para calcular el producto escalar en Python
  2. Calcule el producto escalar utilizando las funciones map() y mul() en Python
  3. Calcule el producto punto utilizando more_itertools.dotproduct en Python
  4. Calcule el producto punto usando NumPy en Python
Calcule el producto escalar de dos listas en Python

El producto punto es una operación matemática también conocida como producto escalar. Un producto escalar es una expresión algebraica que toma una secuencia de dos longitudes iguales y devuelve un solo número como resultado.

Usando la función sum() y zip() para calcular el producto escalar en Python

Podemos calcular el producto escalar de listas de igual longitud utilizando la función zip() y la función sum().

La función zip devuelve un objeto zip combinando elementos en una secuencia de tuplas de ambos iterables. Por otro lado, la función sum devuelve la suma de elementos en iterables como listas.

Dado que el producto escalar involucra matemáticamente una serie de sumas y productos de elementos de la secuencia de números, podemos calcular el producto escalar de dos listas usando las combinaciones de estos dos.

num1 = [2, 4, 6, 8, 10]
num2 = [10, 20, 30, 40, 50]

print(sum([i * j for (i, j) in zip(num1, num2)]))

Producción :

1100

Calcule el producto escalar utilizando las funciones map() y mul() en Python

El módulo operador en Python proporciona un conjunto de funciones para importar y usar operadores intrínsecos en Python para realizar varias operaciones.

Estas operaciones incluyen operaciones lógicas, operaciones de secuencia, operaciones matemáticas y comparación de objetos. La función mul() realiza la multiplicación por elementos de objetos con una serie de números como marcos de datos.

Por otro lado, la función map() es una función incorporada que nos permite aplicar una determinada función a todos los elementos de un iterable. Finalmente, también usaríamos la función sum() para calcular la suma de los productos de las dos listas de valores numéricos, como se muestra en el código a continuación.

from operator import mul

num1 = [2, 4, 6, 8, 10]
num2 = [10, 20, 30, 40, 50]

print(sum(map(mul, num1, num2)))

Producción :

1100

Calcule el producto punto utilizando more_itertools.dotproduct en Python

Python more_itertools es una biblioteca de Python que proporciona funciones elegantes para trabajar con iterables en Python. Las funciones proporcionadas por la biblioteca more_itertools nos permiten agrupar y seleccionar iterables entre otras operaciones como ventanas, combinatoria y envoltura.

La biblioteca more_itertools no solo proporciona soluciones para iteraciones complejas; también es más elegante y eficiente en memoria. Usando la función more_itertools.product(), podemos calcular el producto escalar de una secuencia de números en una lista como se muestra a continuación.

import more_itertools as mit

num1 = [2, 4, 6, 8, 10]
num2 = [10, 20, 30, 40, 50]
print(mit.dotproduct(num1, num2))

Producción :

1100

Calcule el producto punto usando NumPy en Python

NumPy es un paquete científico de Python que nos permite trabajar con objetos multidimensionales como arreglos y matrices.

NumPy es rápido pero más eficiente ya que podemos lograr mucho usando muy poco código. Podemos trabajar sin problemas con arreglos sin indexación explícita ni bucles a través de su código vectorizado.

A continuación se muestra una solución que utiliza un bucle for y la combinación del producto y el operador de suma para calcular el producto escalar de dos listas.

num1 = [2, 4, 6, 8, 10]
num2 = [10, 20, 30, 40, 50]

dot_product = 0
for x, y in zip(num1, num2):
    dot_product = dot_product + x * y
print("The dot product of the two lists is: ", dot_product)

Producción :

The dot product of the two lists is:  1100

Aunque esta solución calcula el producto escalar, NumPy ofrece una alternativa más elegante sin escribir ningún bucle.

Usando el método numpy.dot(), podemos calcular fácilmente el producto escalar de una secuencia de números en dos listas. Esta solución es precisa y, por lo tanto, no es propensa a errores y puede implementarse en el siguiente código.

import numpy as np

num1 = [2, 4, 6, 8, 10]
num2 = [10, 20, 30, 40, 50]
dot_product = np.dot(num1, num2)
print("The dot product of the two lists is: ", dot_product)

Producción :

The dot product of the two lists is:  1100
Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Artículo relacionado - Python List