2017-08-26 75 views
0

我有兩個python列表(nltk synsets)。對於第一個列表中的每個項目,我想迭代第二個列表的所有項目,並輸出一個值,該值將第二個列表的項目作爲該方法的參數應用於第一個列表。對於列表中的每個項目,迭代另一個列表中的所有其他項目,輸出一個數組-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的每個項目,從而在包括含有一個值的每個可能的2路組合的相似性得分3×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中的兩項之間的相似性分數。

我試過幾種笨拙的方法,沒有任何運氣。謝謝你的幫助。另外,我真的很想了解代碼解決方案如何工作,所以任何引用也會有所幫助。

+0

謝謝。我想我會需要itertools,但不知道哪個功能。對於那些可能試圖做類似的事情的人來說,這是一點點改進。爲了得到所提到的數組,我實際上使用了:'np.asfarray([i.path_similarity(j)for itertools.product(l1,l2)]中的i,j)reshape(len(l1),len(l2)) ' – RosieMB

回答

0

嵌套列表理解應該提供您正在尋找的輸出:

[[fwrd.path_similarity(i) for i in l2] for fwrd in l1] 

只是通過這np.ndarray()

+0

謝謝。我想我會需要itertools,但不知道哪個功能。對於那些可能試圖做類似的事情的人來說,這是一點點改進。爲了得到所提到的數組,我實際上使用了:'np.asfarray([i.path_similarity(j)for itertools.product(l1,l2)]中的i,j)reshape(len(l1),len(l2)) ' – RosieMB

+0

@RosieMB您可以發佈自己的問題的答案,很難在評論中看到答案。 – AChampion

相關問題