numpy在一行中找到最大值并返回其列索引

时间:2018-11-12 11:27:05

标签: python numpy

我有一个名为lda_trans的180295 * 10 numpy数组,行表示单词,列表示10个主题。

array([[0.01841009, 0.01840699, 0.35798764, ..., 0.38443892, 0.01841072,
        0.12870054],
       [0.1       , 0.1       , 0.1       , ..., 0.1       , 0.1       ,
        0.1       ],
       [0.1       , 0.1       , 0.1       , ..., 0.1       , 0.1       ,
        0.1       ],
       ...,
       [0.0416964 , 0.62473603, 0.0416964 , ..., 0.04169395, 0.04169796,
        0.04169232],
       [0.03772096, 0.03775132, 0.66048403, ..., 0.03771698, 0.03772411,
        0.0377139 ],
       [0.03754747, 0.03756587, 0.66206395, ..., 0.03754399, 0.037551  ,
        0.03753927]])

现在,我想回退每一行的最大值的列名,我只知道如何提取每一行的最大值,但是我不知道如何获取列名。 我知道在熊猫中可以使用idxmax。但是Numpy中有类似的功能吗?谢谢!

for i in range(180295):
    lda_trans_max.append(np.max(lda_trans[i]))

2 个答案:

答案 0 :(得分:2)

使用np.argmax

演示:

>>> a                                                                                                                            
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> np.argmax(a, axis=1)                                                                                                             
array([4, 4])

在这里得到[4, 4]是因为在两行中,具有最大值的元素都在位置4上。

另一个演示:

>>> a                                                                                                                                
 array([[5, 9, 7, 6, 8],
       [8, 7, 7, 6, 9]])
>>> np.argmax(a, axis=1)                                                                                                             
array([1, 4])

答案 1 :(得分:1)

有时候很数学。试试看 argmax

相关问题