【问题标题】:Sorting A 2-Dimensional Array on Multiple Axes在多个轴上对二维数组进行排序
【发布时间】:2021-01-22 11:43:51
【问题描述】:

我有以下数组:

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"]]

我想按第三列后跟第一列排序,结果是:

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 axes 但我收到以下错误:

  ind = np.lexsort((a[:,2],a[:,0]))
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

我不必使用 numpy,但这是我发现按多个轴对 2D 数组进行排序的唯一方法

感谢任何帮助。

【问题讨论】:

    标签: python numpy sorting multidimensional-array


    【解决方案1】:

    不如试试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']]
    

    【讨论】:

      猜你喜欢
      • 2013-08-17
      • 2015-09-17
      • 2011-10-27
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      相关资源
      最近更新 更多