首页 > 解决方案 > 将同一列表中的向量相乘并打印最高的 2 个输出

问题描述

我有一个乘以 2 个向量的函数

mltply(vec1, vec2)

我还有一个包含 n 个向量的列表。

vectors_list = [array([1,2,4],dtype=float32), array([2,2,1],dtype=float32), array([3,5,1], dtype=float32)]

我想将数组列表中的每个向量乘以列表中的其他向量,然后打印 3 个最高结果。

我尝试了以下方法,但它不起作用。

for vec in vectors_list:
        print(mltply(vec,vec1) for vec, vec1 in zip(vectors_list,vectors_list[1:]))

标签: pythonlist

解决方案


您可以使用itertools.combinations将数组列表中的每个向量乘以列表中的其他向量:

import itertools

result = [mltply(v1, v2) for v1, v2 in itertools.combinations(vectors_list, 2)]

要打印 3 个最高的结果,您可以使用内置函数sorted,或者您可以使用对列表进行内联排序,list.sort然后切片前 3 个元素:

print(sorted(result)[-3:])

或者:

result.sort()
print(result[-3:])

推荐阅读