我有以下數(shù)組:tasks = [["LNWBN","2017-08-13","2017-12-24","Corey","Kyle","Kaleb","Reuben"], ["NSXEN","2017-08-20","2017-09-18","Kai"], ["DNMDC","2017-06-19","2017-08-07","Kaleb","Kai","Kyle","Reuben"], ["UYWEQ","2017-04-23","2017-07-18","Corey","Kyle","Reuben","Kai"], ["LIVNH","2017-11-01","2017-12-24","Kaleb","Kai"]]我想按第三列排序,然后按第一列排序,結(jié)果是:tasks = [["UYWEQ","2017-04-23","2017-07-18","Corey","Kyle","Reuben","Kai"], ["DNMDC","2017-06-19","2017-08-07","Kaleb","Kai","Kyle","Reuben"], ["NSXEN","2017-08-20","2017-09-18","Kai"], ["LIVNH","2017-11-01","2017-12-24","Kaleb","Kai"],["LNWBN","2017-08-13","2017-12-24","Corey","Kyle","Kaleb","Reuben"]] 我嘗試使用 lexsort:a = np.array(tasks)ind = np.lexsort((a[:,2],a[:,0])) sorted_tasks = a[ind]這是這里的最佳解決方案Sorting a 2D numpy array by multiple axis 但出現(xiàn)以下錯誤: ind = np.lexsort((a[:,2],a[:,0]))IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed我不必使用 numpy,但這是我發(fā)現(xiàn)按多個軸對 2D 數(shù)組進行排序的唯一方法
1 回答

MYYA
TA貢獻1868條經(jīng)驗 獲得超4個贊
你為什么不試試 python 的sorted:
sorted(tasks, key=lambda x: (x[2],x[0]))
輸出:
[['UYWEQ', '2017-04-23', '2017-07-18', 'Corey', 'Kyle', 'Reuben', 'Kai'],
['DNMDC', '2017-06-19', '2017-08-07', 'Kaleb', 'Kai', 'Kyle', 'Reuben'],
['NSXEN', '2017-08-20', '2017-09-18', 'Kai'],
['LIVNH', '2017-11-01', '2017-12-24', 'Kaleb', 'Kai'],
['LNWBN', '2017-08-13', '2017-12-24', 'Corey', 'Kyle', 'Kaleb', 'Reuben']]
添加回答
舉報
0/150
提交
取消