使用numpython限制矩阵每行中的元素数

使用numpython限制矩阵每行中的元素数,python,numpy,matrix,indexing,replace,Python,Numpy,Matrix,Indexing,Replace,我有以下numpy矩阵: import numpy as np matrix = np.array([[1,2,3],[4,5,6]]) 和一个numpy向量: vector = np.array([1,2]) 其中,向量中的每个元素表示矩阵的每一行,即我要保留的元素数。我想用0替换矩阵中的所有其他元素 最终的矩阵应如下所示: matrix_output = np.array([[1,0,0],[4,5,0]]) 最快的方法是什么?可以做如下简单的事情: import numpy as

我有以下numpy矩阵:

import numpy as np
matrix = np.array([[1,2,3],[4,5,6]])
和一个numpy向量:

vector = np.array([1,2])

其中,向量中的每个元素表示矩阵的每一行,即我要保留的元素数。我想用0替换矩阵中的所有其他元素

最终的矩阵应如下所示:

matrix_output = np.array([[1,0,0],[4,5,0]])


最快的方法是什么?

可以做如下简单的事情:

import numpy as np

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

for row, index in enumerate(vector):
    matrix[row, index:] = 0

print(matrix)
试一试

mask=vector[:,无]
[[1 0 0]
 [4 5 0]]
mask = vector[:,None]<=np.arange(3)
matrix[mask] = 0