【问题标题】:Value and Index of MAX in each column of matrix矩阵每一列中MAX的值和索引
【发布时间】:2017-01-09 10:14:00
【问题描述】:

我知道:

id,value = max(enumerate(trans_p), key=operator.itemgetter(1))

我正在尝试找到与矩阵等效的东西,我正在寻找 valuerow index 的最大值 每列矩阵的强>

所以函数可以接受任何矩阵,例如:

np.array([[0,0,1],[2,0,0],[5,0,0]])

并返回两个向量:找到最大值的行号向量,以及最大值本身 - 对于每一列。我试图避免for循环!理想情况下,该函数返回两个值,如下所示:

rowIdVect, maxVect = ...........

上面示例矩阵的值将是:

[2,0,0]  #rowIdVect
[5,0,1]  #maxVect

我可以分两步完成:

idVect = np.argmax( myMat , axis=0)
maxVect = np.max( trans_probs_mat, axis=0)

但是有没有一种可以同时执行的语法? 注意:我正在尝试缩短运行时间。

【问题讨论】:

    标签: python-3.x numpy


    【解决方案1】:

    可以使用索引找到对应的值:

    In [201]: arr=np.array([[0,0,1],[2,0,0],[5,0,0]])
    In [202]: idx=np.argmax(arr, axis=0)
    In [203]: np.max(arr, axis=0)
    Out[203]: array([5, 0, 1])
    In [204]: arr[idx,np.arange(3)]
    Out[204]: array([5, 0, 1])
    

    这值得吗?我怀疑使用argmax 和/或max 是否是您计算中的瓶颈。但请随时使用真实数据进行时间测试。

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 2013-11-18
      • 2012-04-13
      相关资源
      最近更新 更多