Python 根据标志向量对数组元素求和

Python 根据标志向量对数组元素求和,python,Python,假设我有两个数组,其中一个实际上是一个列表 A=数组[[0,1,2],[3,4,5],[6,7,8]] 及 flag=[[55,55,00],[55,00,33],[0,33,33]] 我想使用标志中相应的值作为键对A中的值求和。结果应包含A中每个值对应组的总和 生成的数组应该是 B=[[4,4,12],[4,12,20],[12,20,20]] 因为,例如,元素A110、a12 1和a21 3在标志数组中具有键值55的相同位置。有人对如何使用python有想法吗 PS:我编辑了这个问题,试图让

假设我有两个数组,其中一个实际上是一个列表

A=数组[[0,1,2],[3,4,5],[6,7,8]]

flag=[[55,55,00],[55,00,33],[0,33,33]]

我想使用标志中相应的值作为键对A中的值求和。结果应包含A中每个值对应组的总和

生成的数组应该是

B=[[4,4,12],[4,12,20],[12,20,20]]

因为,例如,元素A110、a12 1和a21 3在标志数组中具有键值55的相同位置。有人对如何使用python有想法吗


PS:我编辑了这个问题,试图让其他可能有相同问题的用户更清楚地了解它。

这里有一个可行的解决方案:

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

你已经试过什么了?你是说[flag==55].sum吗?你能解释一下你想实现什么样的逻辑吗。。。标志55的总和为0+1+3,标志33的总和为5+7+8。我不明白你的意思,显然他是在用flag中的相应值作为键来分组A中的值。结果B将包含A.@mgilson Yes中每个值对应组的总和。这对我有很大帮助。我想不出这么简单的事情。使用此工具,我可以为所有数组元素创建cam工具。非常感谢你!!!感谢@BPL为您提供的解决方案。这将是非常有帮助的真实情况下,我现在的工作。在我的真实案例中,我使用的是3D阵列。事实上,A的所有元素都是光谱中的其他元素。