如何根据特定索引替换矩阵中的值?
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
我正在尝试根据坐标数组对矩阵进行索引,这样我就可以用 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