【问题标题】:Find the maximum values of a matrix in rows axis and replace other values to zero在行轴中查找矩阵的最大值并将其他值替换为零
【发布时间】:2021-11-22 07:45:42
【问题描述】:
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 循环的情况下做到这一点? 提前感谢您的 cmets。

【问题讨论】:

    标签: numpy matrix max data-science data-manipulation


    【解决方案1】:

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

    就地这个样子(这里True 代表keepdims=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]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      相关资源
      最近更新 更多