【问题标题】:dot product in python [closed]python中的点积[关闭]
【发布时间】:2010-11-04 04:54:10
【问题描述】:

这段 Python 代码真的能找到两个向量的点积吗?

import operator

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

【问题讨论】:

  • 好像会的,是的,你为什么要问?
  • 这最好被问到“如何在(Vanilla)Python中做点积”,或者类似的东西。

标签: python dot-product


【解决方案1】:

是的。这是另一种方式

>>> 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

【讨论】:

  • 很好,唯一的问题是你错过了列表理解的 []。
  • @chuse,没有列表推导,它是一个生成器表达式
  • 哇,我不知道这存在。其实我一直用sum(map(lambda x:f(x), list))之类的东西,然后我去了sum([ f(x) for x in list]),现在我可以做sum(f(x) for x in list)。酷。
【解决方案2】:

您还可以使用 dot product 的 numpy 实现,它在本机代码中进行了大型数组优化,以使计算稍快一些。除非您专门尝试编写点积例程或避免依赖关系,否则使用久经考验的广泛使用的库比使用自己的库要好得多。

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 1970-01-01
    • 2017-12-13
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多