考虑我有这两个数组(事实上其中一个是列表)
A = array([[0, 1, 2],[3, 4, 5],[6, 7, 8]])
和
flag = [[55, 55, 00], [55, 00, 33], [0, 33, 33]]
我想使用flag中的相应值作为键来对A中的值求和。结果应包含A中每个值的相应组的总和。
结果数组应为
B = [[4, 4, 12], [4, 12, 20], [12, 20, 20]]
PS:我已经编辑过这个问题,试图让其他可能遇到同样问题的用户更清楚。
答案 0 :(得分:0)
这是一个可行的解决方案:
from numpy import array
from collections import defaultdict
A = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
flag = [[55, 55, 00], [55, 00, 33], [0, 33, 33]]
keys = defaultdict(int)
for i, f in enumerate(flag):
for j, v in enumerate(f):
keys[v] += A[i][j]
B = [[keys[v] for j, v in enumerate(f)] for i, f in enumerate(flag)]
print(B)
这给出了下一个输出:
[[4, 4, 12], [4, 12, 20], [12, 20, 20]]