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

10

我有一个名为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]])

现在我想要获取每行最大值所在的列名,我只知道如何提取每行中的最大值,但不知道如何获取其所在的列名。 我知道在Pandas中可以使用idxmax函数,但是在Numpy中是否有类似的功能呢?谢谢!

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

12

使用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])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接