使用索引同时从 numpy 二维数组的行中减去多个值

Subtract multiple values from row of numpy 2D-array at the same time, using indices

我有一个二维numpy数组f,例如:

f = np.array(
   [
    [0,0,0],
    [0,0,0],
    [0,0,0]
   ]
)

和另一个二维数组q,例如:

q = np.array(
   [
    [1,1,1],
    [1,1,1],
    [2,2,2],
    [3,3,3]
   ]
)

q 中的每一行都应添加到 f 中的特定行,而我只有 f 中的行索引列表 l,以应添加 q 中的每一行。 l 的长度等于 q 中的行数。例如:

l = [0,2,0,0]

这意味着我想做这样的事情:

f[l] += q

应该将 f 转换为:

[
 [6,6,6],
 [0,0,0],
 [1,1,1]
]

即我期待它这样做:

f[0] += q[0]
f[2] += q[1]
f[0] += q[2]
f[0] += q[3]

但是当某些索引在 l 中重复时(本例中的索引 0),它只会添加 q 中与 [= 中最后一个重复索引相对应的行23=]。所以相反,我得到:

[
 [3,3,3],
 [0,0,0],
 [1,1,1]
]

这意味着它正在这样做:

f[2] += q[1]
f[0] += q[3]

如何将 q 中的多行添加到 f 中的同一行,只需要列表 l

尝试 np.add.atnp.add.at(f, l, q)