代码之家  ›  专栏  ›  技术社区  ›  Mateo del Rio Lanse

NumPy内置函数,用于查找矩阵中最大的向量

  •  2
  • Mateo del Rio Lanse  · 技术社区  · 11 月前

    我有一个二维numpy矩阵:

    arr = np.array([(1, 2), (6, 0), (3, 3), (5, 4)])
    

    我正在尝试获取输出:

    [5, 4]

    我试着做以下事情:

    max_arr = np.max(arr, axis=0)
    

    但这会在矩阵的每一列中找到最大值,而不管这些值来自哪个向量。

    也许有一些函数会考虑数组中每个向量的和?我们的想法是尽可能少地使用优化的NumPy功能。

    1 回复  |  直到 11 月前
        1
  •  2
  •   mozway    11 月前

    计算 sum 每行,然后用以下公式获取最大值的位置 argmax 并将其用于索引:

    out = arr[arr.sum(axis=1).argmax()]
    

    输出: array([5, 4])

    中间体:

    arr.sum(axis=1)
    # array([3, 6, 6, 9])
    
    arr.sum(axis=1).argmax()
    # 3
    

    变体:所有最大值

    如果可以有多个最大值,则可以使用:

    out = arr[(s:=arr.sum(axis=1)) == s.max()]
    

    或者对于python<3.8:

    s = arr.sum(axis=1)
    out = arr[s == s.max()]
    

    输出:

    array([[5, 4]])
    

    注意2D输出,如果几行具有相同的最大和,则会得到多行。