我需要对
[x,y]
坐标列表进行排序,如下所示:
list = [[1,2],[0,2],[2,1],[1,1],[2,2],[2,0],[0,1],[1,0],[0,0]]
排序后我要寻找的模式是:
[x,y]
坐标应先按y
排序,然后按x
排序。新列表应如下所示:
list = [[0,0],[1,0],[2,0],[0,1],[1,1],[2,1],[0,2],[1,2],[2,2]]
我不知道该怎么做,希望得到一些帮助。
您可以在排序之前将列表转换为 pandas 数据框,因为 pandas 提供了许多内置函数来处理 df。与列表相比,您将有更多选择
>>> import pandas as pd
>>> list = [[1,2],[0,2],[2,1],[1,1],[2,2],[2,0],[0,1],[1,0],[0,0]]
>>> df = pd.DataFrame(list, columns=['x','y'])
>>> df_sorted = df.sort_values(by=['y', 'x'])
>>> df_sorted
x y
8 0 0
7 1 0
5 2 0
6 0 1
3 1 1
2 2 1
1 0 2
0 1 2
4 2 2
定义虚拟索引 Z = (X+Y) 现在对 Z 执行快速排序并基于索引 Z 选取元素 (X, Y)。圆上的点将导致相同的 Z(并且显然会在排序结果中粘在一起)