python中的点积

use*_*858 14 python dot-product

这个Python代码实际上是否找到了两个向量的点积?

import operator

vector1 = (2,3,5)
vector2 = (3,4,6)
dotProduct = reduce( operator.add, map( operator.mul, vector1, vector2))
Run Code Online (Sandbox Code Playgroud)

Joh*_*ooy 48

是的,它确实.这是另一种方式

>>> sum(map( operator.mul, vector1, vector2))
48
Run Code Online (Sandbox Code Playgroud)

和另一个根本不使用operator

>>> vector1 = (2,3,5)
>>> vector2 = (3,4,6)
>>> sum(p*q for p,q in zip(vector1, vector2))
48
Run Code Online (Sandbox Code Playgroud)

  • @chuse,没有列表理解,它是一个生成器表达式 (13认同)
  • 哇,我不知道这存在.事实上,我总是使用诸如`sum(map(lambda x:f(x),list))`之类的东西,然后我去了`sum([f(x)for x in list])`,现在我可以做`sum(列表中x的f(x))` 凉. (4认同)

wha*_*ick 7

您还可以使用dot产品的numpy实现,该产品在本机代码中具有大型数组优化,以使计算速度稍快一些.除非你专门尝试编写点产品例程或避免依赖,否则使用经过测试的广泛使用的库比使用自己的库更好.