给定一个二维数组,我正在寻找一种Python式的方法来获取相同形状的数组,每行只有最大元素。 请参阅下面的 max_row_filter 函数
def max_row_filter(mat2d):
m = np.zeros(mat2d.shape)
for r in range(mat2d.shape[0]):
c = np.argmax(mat2d[r])
m[r,c]=mat2d[r,c]
return m
p = np.array([[1,2,3],[5,4,3,],[9,10,3]])
max_row_filter(p)
Out: array([[ 0., 0., 3.],
[ 5., 0., 0.],
[ 0., 10., 0.]])
我正在寻找一种有效的方法来做到这一点,适合在大数组上完成。
最佳答案
替代答案(这将保留重复项):
p * (p==p.max(axis=1, keepdims=True))
关于python - 如何有效过滤矩阵每行的最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078494/