【发布时间】:2019-02-19 15:35:23
【问题描述】:
我有两个列表,例如
coords = [2, 0, 1, 4, 3]
value = [1, 9, 3, 3, 0]
其中第一个是一系列坐标,第二个是与坐标对应的一系列值,例如坐标'2' 对应于值'1',坐标'0' 给出值'9'。
现在,我想对coords进行排序但是保持value的顺序不变,这样最小的coords元素对应于value中的最小元素,以此类推在。期望的输出是:
coords_new = [1, 4, 2, 3, 0]
value = [1, 9, 3, 3, 0] # unchanged
在哪里'0' -> '0', '1' -> '1', '2' -> '3', '3' -> '3', '4' -> '9'。
有什么想法吗?您可以返回 coords_new,或将 coords 重新排序的索引作为答案。
编辑:
如果可能的话,我希望我们可以返回对原始coords 重新排序的索引,即返回idx 使得coords[idx] = coords_new。
非常感谢!
志豪
【问题讨论】:
-
只需使用
np.argsort生成排序索引。 -
好吧,我不认为 np.argsort 可以直接获得所需的输出......有什么想法吗?
-
就我而言,坐标应该是唯一的。但是如果你能得到一个一般情况的解决方案那就更好了。
标签: python list sorting numpy dictionary