回答问题

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

Answers

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

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐