如何根据特定索引替换矩阵中的值?

How to replace values in a matrix based on specific indices?

我正在尝试根据坐标数组对矩阵进行索引,这样我就可以用 1 替换那些位置中的值,其余的保持原样。这就是我的意思:

我有以下 3x3 矩阵

matrix = np.zeros((3,3), dtype=int)
matrix

>>> array([[0, 0, 0],
           [0, 0, 0],
           [0, 0, 0]])

我有以下数组

coords = np.array([[0,0],[2,1],[0,2]])
coords

>>> array([[0, 0],
           [2, 1],
           [0, 2]])

我想做的是仅在数组coords中元素指定的位置用1替换原始矩阵中的值。这是所需的输出:

>>> array([[1, 0, 1],
           [0, 0, 0],
           [0, 1, 0]])

我尝试做的是

matrix[coords]=1

然而,这是我得到的输出:

>>> array([[1, 1, 1],
           [1, 1, 1],
           [1, 1, 1]])

有谁知道如何只替换指定位置的值,并获得我想要的输出?

谢谢大家的帮助。

您可以运行例如:

matrix[tuple(coords.T)] = 1