python - 带字典的点积

标签 python numpy

我正在尝试对两个字典的值进行点积。例如:

dict_1={'a':2, 'b':3, 'c':5, 'd':2}
dict_2={'a':2, 'b':2, 'd':3, 'e':5 }

在列表形式中,上面的内容如下所示:

dict_1=[2,3,5,2,0]
dict_2=[2,2,0,3,5]

具有相同键的字典的点积将导致:

Ans= 16  [2*2 + 3*2 + 5*0 + 2*3 + 0*5]

我怎样才能用字典实现这个目标?有了这个列表,我就可以调用 np.dot 函数或编写一个小循环。

最佳答案

在通过迭代 dict_1 键生成的列表上使用 sum 函数,并结合针对 dict_2 的 get() 函数:

dot_product = sum(dict_1[key]*dict_2.get(key, 0) for key in dict_1)

关于python - 带字典的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079472/

相关文章:

python - 如何从列表中优先提取多个匹配值之一?

python - 如何在Python中将thrift对象转换为Json?

python - 当列名不同时如何将数据框附加到另一个数据框(具有相同的列大小)

python - 如何从解码的 JSON 对象中删除 "u"?

python - 迭代 Pandas 数据框,检查值并创建其中一些

python - numpy,其中 RGB channel 大于 [0,0,0]

python - MongoDB:找到数组中的最小元素并将其删除

python - 如何制作一个根据参数对数组进行切片的函数

python - 使用 PIL 对图像进行矢量化 reshape 和裁剪

python - 将 PyTorch 张量与 scikit-learn 结合使用