python - 将同一列表中的向量相乘并打印最高的 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:]))
解决方案
您可以使用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:])
推荐阅读
- material-ui - 为什么 Material UI 的 Grid 组件根据环境使用不同的 propTypes 实现不同的组件
- ios - 如何制作圆形按钮,并且只响应圆形区域的点击事件
- html - 您可以使用 mailto 预先填写电子邮件的部分内容吗?
- keras - 从用于图像分割的 U-Net 迁移学习 [Keras]
- postgresql - 无法访问安装在 kubernetes 中的 Prometheus Postgres 导出器:连接被拒绝
- android - 缩小启用后无法识别android项目中的模块类
- javascript - React.js 和 D3,向强制有向图添加箭头
- mysql - 查询MySQL的问题
- selenium-webdriver - 无法在 selenium 中打开新选项卡或新窗口
- javascript - 在 Nuxt/Vue 应用程序中使用 tawk.to