【发布时间】:2021-06-11 10:23:43
【问题描述】:
我目前正在尝试对一个 numpy 数组进行排序,但遇到了困难
我要排序的数组如下:
mat = np.array([0.05170475 0.07367926 0.05741241 0.34870369 0.19990381 0.26859608])
现在困难的部分是我要对数组进行排序,但同时还要保留索引。
例如不使用numpy,我会使用
mat = list(enumerate(mat)) # gives [(0, 0.05170474575702143), (1, 0.07367926270375554), (2, 0.05741241249643288), (3, 0.3487036852148175), (4, 0.19990381197331886), (5, 0.2685960818546567)]
mat.sort(reverse = True, key = lambda ×: ×[1]) # gives [(3, 0.3487036852148175), (5, 0.2685960818546567), (4, 0.19990381197331886), (1, 0.07367926270375554), (2, 0.05741241249643288), (0, 0.05170474575702143)]
但是,由于我使用的是numpy,我想知道是否有一个 numpy 函数可以完成所有这些工作。我能够使用np.sort 和np.argsort 分别对索引和值进行排序,但我无法同时进行这两者...
【问题讨论】:
-
可以将
np.sort和np.argsort的结果压缩在一起 -
@Pygirl 太棒了!有没有办法按降序排序,有点像
reverse=True。现在我正在使用np.flip,但我想知道是否有办法告诉 numpy 按降序排序?
标签: python arrays numpy sorting