对于列表中的每个项目,迭代另一个列表的所有其他项目,输出一个数组 - python

时间:2017-08-26 14:10:13

标签: arrays python-3.x list iterable

我有两个python列表(nltk同义词集)。对于第一个列表中的每个项目,我想迭代第二个列表中的所有项目,并输出一个值,该值将方法应用于第一个列表,使用第二个列表的项目作为方法的参数。

示例:

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矩阵,其中包含每个可能的双向组合的相似性得分,其中包含来自l1的一个值和来自l2的一个值。

我可以按如下方式计算矩阵的第一行:

fwrd= l1[0]
frow= np.asfarray([fwrd.path_similarity(i) for i in l2])

导致frow的值为

array([        nan,  0.06666667])

此数组中的第一个值是wn.synset(' i.n.03')和wn.synset(' help.v.01')之间的相似度得分 第二个值是两者之间的相似度得分 wn.synset(' i.n.03')和wn.synset(' girl.n.01')

数组中的第二行将包含l1中第二项与l2中的两项之间的相似性分数等。

我尝试了一些笨拙的方法,没有任何运气。谢谢你的帮助。另外,我真的想了解代码解决方案的 方式,所以任何引用都会有所帮助。

1 个答案:

答案 0 :(得分:0)

嵌套列表理解应该提供您正在寻找的输出:

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

将其传递给np.ndarray()