在行轴上查找矩阵的最大值并将其他值替换为零

Find the maximum values of a matrix in rows axis and replace other values to zero

提问人:Reza Aalaei 提问时间:9/30/2021 更新时间:9/30/2021 访问量:32

问:

A = [[2,2,4,2,2,2]
     [2,6,2,2,2,2]
     [2,2,2,2,8,2]]

我希望矩阵 B 等于:

B = [[0,0,4,0,0,0]
     [0,6,0,0,0,0]
     [0,0,0,0,8,0]]

所以我想找到每行的最大值,并将其他值替换为 0。有没有办法在不使用 for 循环的情况下做到这一点? 提前感谢您的评论。

numpy matrix max 科学数据 操作

评论


答:

2赞 Ivan 9/30/2021 #1

您可以直接获取每行的最大值,然后屏蔽较低的元素并将其替换为零,而不是查看 argmax:

就地这看起来像(这里代表):Truekeepdims=True

>>> A[A < A.max(1, True)] = 0

>>> A
array([[0, 0, 4, 0, 0, 0],
       [0, 6, 0, 0, 0, 0],
       [0, 0, 0, 0, 8, 0]])

一个不合适的替代方法是使用 np.where

>>> np.where(A == A.max(1, True), A, 0)
array([[0, 0, 4, 0, 0, 0],
       [0, 6, 0, 0, 0, 0],
       [0, 0, 0, 0, 8, 0]])