【问题标题】:Subtract multiple values from row of numpy 2D-array at the same time, using indices使用索引同时从 numpy 2D 数组的行中减去多个值
【发布时间】:2022-01-20 21:32:23
【问题描述】:

我有一个二维的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 中行索引的列表lq 中的每一行都应该添加到该列表中. 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中与l中最后一个重复索引相对应的行。所以相反,我得到:

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

这意味着它正在这样做:

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

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

【问题讨论】:

    标签: python arrays numpy indexing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      相关资源
      最近更新 更多