【问题标题】:How to add values to only certain index in Numpy 2D Matrix如何仅将值添加到 Numpy 2D 矩阵中的某些索引
【发布时间】:2022-01-14 03:31:00
【问题描述】:

我有一个二维矩阵

matrix = np.array([[1,2],[3,4],[5,6]])
index = np.array([0, 1, 1])
add_value = np.array([1, 2, 3])

我想将 add_value 添加到矩阵,但只添加到索引列表中与索引对应的元素。例如add_value中的1应该加到[1,2]中的第一个元素,即1,结果为2。 所以输出应该是

np.array([[2,2],[3,6],[5,9]])

【问题讨论】:

  • matrix[np.r_[:matrix.shape[0]], index] += add_value?
  • 你是个天才。祝你有美好的一天

标签: python arrays list numpy


【解决方案1】:

使用简单的多维索引:

matrix[np.arange(matrix.shape[0]), index] += add_value

或者使用 python 内建函数:

matrix[tuple(zip(*enumerate(index)))] += add_value

输出:

array([[2, 2],
       [3, 6],
       [5, 9]])

【讨论】:

    【解决方案2】:
    for i, x in enumerate(add_value):
        matrix[i][index[i]] += x
    

    【讨论】:

    • 这在大型阵列上会很慢
    • 很高兴知道谢谢。对我来说,这是了解正在发生的事情的最简单方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多