【发布时间】:2014-01-07 06:13:36
【问题描述】:
我已经看到问题的答案:
是否可以通过使用元素的索引以降序排列一个 numpy 数组(或 python 列表)?(例如。@987654321 @)
一个非常简洁的答案似乎是(来自上面的链接):
L = array([4, 1, 0, 8, 5, 2])
sorted(range(len(L)), key=lambda i:L[i])
这给出了排序元素的位置(在原始数组中)。
8 --> 3
5 --> 4
4 --> 0
2 --> 5
1 --> 1
0 --> 2
所以答案是:
[3, 4, 0, 5, 1, 2]
我所追求的是元素的位置(在排序数组中):
L = array([4, 1, 0, 8, 5, 2])
8 --> 0
5 --> 1
4 --> 2
2 --> 3
1 --> 4
0 --> 5
所以我想要:
[2, 4, 5, 0, 1, 3]
我意识到我可以从第一个例子中得到答案,并用它来获得我想要的东西(稍微摆弄一下)但是有捷径吗?
效率不是问题。我只需要一些能给我答案的东西。
【问题讨论】:
-
感谢大家的回复。我喜欢使用 lambda 表达式两次来得到我想要的。现在有人可以解释一下(用非常简单的术语来说)那行代码是如何实际操作的,我将不胜感激!
标签: python arrays sorting numpy