2010-11-04 83 views
14

¿Este código de Python realmente encuentra el producto de punto de dos vectores?producto de punto en python

import operator 

vector1 = (2,3,5) 
vector2 = (3,4,6) 
dotProduct = reduce(operator.add, map(operator.mul, vector1, vector2)) 
+2

............... ¿sí? – Amber

+0

Parece que sí, sí, ¿por qué estás preguntando? –

+1

Esto debería haberse preguntado mejor "Cómo hacer un producto de punto en (Python) Vanilla", o algo por el estilo. – ThorSummoner

Respuesta

7

También puede utilizar la aplicación de numpy dot product que tiene grandes optimizaciones de matriz en código nativo para hacer cálculos ligeramente más rápido . Incluso mejor, a menos que intente específicamente escribir una rutina de producto de puntos o evitar dependencias, usar una biblioteca ampliamente probada y probada es mucho mejor que rodar la suya.

48

Sí lo hace. Aquí es otra forma

>>> sum(map(operator.mul, vector1, vector2)) 
48 

y otro que no utiliza en absoluto operator

>>> vector1 = (2,3,5) 
>>> vector2 = (3,4,6) 
>>> sum(p*q for p,q in zip(vector1, vector2)) 
48 
+1

bueno, lo único es que te perdiste el [] de la lista de comprensión. – chuse

+13

@chuse, no hay una lista de comprensión, es una expresión del generador –

+4

wow, no sabía que esto existía. De hecho, siempre usé cosas como 'sum (map (lambda x: f (x), list))', luego fui a 'sum ([f (x) for x in list])', ahora puedo hacerlo 'suma (f (x) para x en la lista)'. Guay. – chuse

Cuestiones relacionadas