我想在屏幕截图中做到这一点。你能帮我吗?
代码:
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]])
答案 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)