从2个现有列表创建新列表,它们的值匹配

时间:2018-07-06 13:26:42

标签: python list

我想在屏幕截图中做到这一点。你能帮我吗?

代码:

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]])

enter image description here

2 个答案:

答案 0 :(得分:0)

这是一个纯Python解决方案。可能会有更高性能的NumPy解决方案。在这里,我们遍历rt并使用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]

答案 1 :(得分:-1)

您正在做的事情很像矩阵乘法。 Numpy具有matmul操作,可以为您做您想做的事情。

np.matmul(rt, op)