在python中如何得到向量的点积(列表形式)

2024-04-19 09:10:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我们给出2个稀疏向量v1和v2表示为计数器,我们需要返回它们的点积。到目前为止我所掌握的代码:

import collections 

v1 = collections.Counter('aaabbbcccd')

v2 = collections.Counter('bcdd')

l1=list(v1.items())

l2=list(v2.items())

我不确定如何从这里继续,因为l1和l2包含:

[(“b”,3),(“c”,3),(“d”,1),(“a”,3)]

[(“b”,1),(“c”,1),(“d”,2)]

我不知道如何从这个表格的列表中计算点积。(在本例中为3*1+3*1+1*2+3*0=8)

同样,这段代码也可以用于任意长度的向量,而不仅仅是4

任何想法都将不胜感激。在


Tags: 代码importl1counter计数器items向量collections
1条回答
网友
1楼 · 发布于 2024-04-19 09:10:41

只需迭代dict的所有键并求和乘积(对于不存在的值,返回0):

sum(v1.get(k, 0) * v2.get(k, 0) for k in v1)

我没有使用列表,因为在我看来,这会使问题变得不必要地复杂化。。。在


还请注意,我提供的答案适用于任何python dict。对于Counter实例,第二步更简单/更干净:

^{pr2}$

相关问题 更多 >