簡體   English   中英

兩個向量之間的Python,DotProduct問題

[英]Python, DotProduct between two vectors issue

我試圖在兩個向量之間做一個點積,但是問題是它們必須是對稱的,現在我解釋一下我的意思。

如果我有兩個這樣的向量:

[('horse',2),('doll',34)]

[('horse',1),('monster',23),('salamander',12),('doll',17)]

在這種情況下,我將有兩個數值向量

[2,34]
[1,23,12,17]

但是要獲得正確的點積,我希望有兩個長度相同的向量,並且具有相同單詞的值必須位於相同位置,並用零填充未使用的位置。

例如:

[2,0,0,34]
[1,23,12,17]

任何想法如何以這種方式轉換第一個向量? 我必須在python中完成謝謝!

使用dict.get

>>> list1 = [('horse',2),('doll',34)]
>>> list2 = [('horse',1),('monster',23),('salamander',12),('doll',17)]

>>> d = dict(list1)  # => {'horse': 2, 'doll': 34}
>>> v2 = [value for name, value in list2]
>>> v1 = [d.get(name, 0) for name, value in list2]
>>> # d.get(name, 0) will return `0` for non-existing key (name).

>>> v1
[2, 0, 0, 34]
>>> v2
[1, 23, 12, 17]

>>> sum(x * y for x, y in zip(v1, v2))
580

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM