Python中的点积
这段Python代码真的能找到两个向量的点积吗?
import operator
vector1 = (2,3,5)
vector2 = (3,4,6)
dotProduct = reduce( operator.add, map( operator.mul, vector1, vector2))
2 个回答
48
是的,确实可以。这里有另一种方法
>>> sum(map( operator.mul, vector1, vector2))
48
还有一种完全不使用 operator
的方法
>>> vector1 = (2,3,5)
>>> vector2 = (3,4,6)
>>> sum(p*q for p,q in zip(vector1, vector2))
48
7
你还可以使用numpy库里的点积功能,这个功能在处理大数组时进行了优化,能让计算速度稍微快一些。更重要的是,除非你特别想自己写一个点积的程序或者想避免使用其他库,否则使用一个经过验证、广泛使用的库要比自己从头开始写要好得多。