使用numpython限制矩阵每行中的元素数
我有以下numpy矩阵:使用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
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