[英]For each item in a list, iterate over all other items of another list, output an array - python
我有兩個(nltk同義詞集的)python列表。 對於第一個列表中的每個項目,我想遍歷第二個列表中的所有項目,並輸出一個值,該值使用第二個列表中的項目作為方法的參數將方法應用於第一個列表。
例:
l1 = [wn.synset('i.n.03'), wn.synset('need.v.03'), wn.synset('aid.n.01')]
l2 = [wn.synset('help.v.01'), wn.synset('girl.n.01')]
對於l1中的每個項目,我想計算與l2中的每個項目的相似性得分,從而得到一個3x2矩陣,其中包含每種可能的2向組合的相似性得分,這些組合包含來自l1的一個值和來自l2的一個值。
我可以如下計算矩陣的第一行:
fwrd= l1[0]
frow= np.asfarray([fwrd.path_similarity(i) for i in l2])
導致frow的值為
array([ nan, 0.06666667])
此數組中的第一個值是wn.synset('in03')和wn.synset('help.v.01')之間的相似性得分。第二個值是wn.synset('in03')和wn之間的相似性得分.synset('girl.n.01')
數組中的第二行將包含l1中的第二個項目與l2中的兩個項目之間的相似性分數,依此類推。
我嘗試了幾種笨拙的到達目的地的方法。 謝謝你的幫助。 另外,我真的想了解代碼的解決方案是如何工作的,因此任何引用也將是有益的。
嵌套列表推導應提供您要查找的輸出:
[[fwrd.path_similarity(i) for i in l2] for fwrd in l1]
只需將其傳遞給np.ndarray()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.