首页 > 解决方案 > 如何有效地订购一个numpy矩阵

问题描述

我有这个 numpy 数组

matrix = np.array([[ 0.8,  0.2,  0.1],
   [ 1. ,  0. ,  0. ],
   [ 0. ,  0. ,  1. ]])

并且我想过滤以返回matrix以递减值顺序排列的每一行索引。

例如,这将是

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

我知道我可以使用np.argsort,但这似乎并没有返回正确的输出。我尝试将其更改axis为不同的值,但这也无济于事。

标签: pythonnumpybroadcasting

解决方案


获得所需输出的最简单方法可能是:

(-matrix).argsort(axis=1)
# array([[0, 1, 2],
#        [0, 1, 2],
#        [2, 0, 1]])

推荐阅读