python - 从 2 个现有列表创建新列表,它们的值匹配
问题描述
我想在屏幕截图中这样做。你能帮我吗?
代码:
import numpy as np
op = np.array([[46, 29],
[39, 47],
[25, 47],
[31, 24]])
rt = np.array([[1, 1, 1, 0], # op[0][1]+op[1][1]+op[2][1]+op[3][0]= 29 + 47 + 47 + 31 = 154
[1, 0, 1, 1],
[1, 0, 1, 0],
[0, 1, 0, 1],
[1, 1, 0, 0],
[0, 1, 1, 1],
[0, 1, 0, 1],
[1, 1, 1, 0],
[0, 1, 1, 0],
[1, 0, 1, 0]])
解决方案
这是一个纯 Python 解决方案。可能有一个性能更高的 NumPy 解决方案。在这里,我们迭代rt
并用 .zip 压缩那里的子数组op
。然后我们使用子数组的值作为子数组rt
中的索引op
,并对我们查找的值求和。
[sum(o[r] for o, r in zip(op, x)) for x in rt]
# [154, 139, 146, 142, 132, 164, 142, 154, 171, 146]
推荐阅读
- angular - 是否可以在特定的 DOM 元素上打开 angular/Material2 Snackbar?
- fortran - Fortran的“include”语句和“#include”指令的区别
- c# - 优化代码
- php - 维护:单例与依赖注入
- python - 使用包含 requires_grad=True 参数的三重 for 循环时,Python 内核死亡(Pytorch)
- c# - 如何使用 ActionLink 作为提交按钮来删除表格中的每一行?
- javascript - d3 v4 从 CSV 堆叠到分组条形图
- jquery - bootstrap-datepicker.es.min 在所有
- c++ - 具有泛化make_shared和make_unique方法的复合指针特征类?
- java - onMessage WebSocket 中的消息处理