【问题标题】:How use argmax along axis to get maximum values in each column of numpy 2D array? [duplicate]如何沿轴使用 argmax 来获取 numpy 二维数组每一列的最大值? [复制]
【发布时间】:2018-08-16 11:30:53
【问题描述】:

例如我有以下二维数组:

array([[ 5.59635947,  1.42474555,  1.56519762],
       [ 6.16476541,  6.12324772,  5.32735447],
       [ 8.60258444,  7.16592582,  1.49555662],
       [ 0.63983973,  5.50249666,  3.52246942],
       [ 5.34002941,  4.87065573,  9.80725886]])

我使用 argmax 沿轴 = 0 来获取每列中最大元素的位置:

i = np.argmax(c,axis=0)
array([2, 2, 4])

嗯,我已经计算了指数。如何获得每列的最大元素?

当我编写以下代码时:

dd_m= np.zeros(i.shape)
for k in np.arange(i.size):
    dd_m[k] = c[i[k],k]

我得到正确答案,即:

 array([ 8.60258444,  7.16592582,  9.80725886])

有没有更高效或 Pythonic 的方式来做到这一点?

【问题讨论】:

    标签: python numpy multidimensional-array max argmax


    【解决方案1】:

    试试:

    c.max(axis=0)
    

    或者:

    np.max(c, axis=0)
    

    或者如果您已经计算了指数:

    c[i, np.arange(c.shape[1])]
    

    c 是您的矩阵,i 是找到的最大值索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多