Python中的点积

14 投票
2 回答
58038 浏览
提问于 2025-04-16 06:32

这段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库里的点积功能,这个功能在处理大数组时进行了优化,能让计算速度稍微快一些。更重要的是,除非你特别想自己写一个点积的程序或者想避免使用其他库,否则使用一个经过验证、广泛使用的库要比自己从头开始写要好得多。

撰写回答