我知道:
id,value = max(enumerate(trans_p), key=operator.itemgetter(1))
我正在尝试找到与矩阵等效的东西,我正在寻找每列最大的值和行索引 矩阵
所以函数可以包含任何矩阵,例如:
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)
但是有一种语法可以同时执行吗? 注意:我正在尝试改善运行时间。
答案 0 :(得分:0)
您可以使用索引查找相应的值:
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
是否是计算中的瓶颈。但请随时用实际数据进行时间测试。