【问题标题】:Sort NumPy array by values in two columns [duplicate]按两列中的值对 NumPy 数组进行排序[重复]
【发布时间】:2016-03-13 17:20:49
【问题描述】:

所以我有一个二维数组,当使用 a[np.argsort(-a[:,1])] 按第二列排序时,它看起来像这样:

array([[ 30.        ,  98.7804878 ],
       [ 24.        ,  98.7804878 ],
       [ 21.        ,  98.7804878 ],
       [ 26.        ,  98.7804878 ],
       [ 20.        ,  98.70875179],
       [  4.        ,  98.27833572],
       [  1.        ,   7.10186514]])

现在我想按最低的“id”列对其进行排序,如下所示:

array([[ 21.        ,  98.7804878 ],
       [ 24.        ,  98.7804878 ],
       [ 26.        ,  98.7804878 ],
       [ 30.        ,  98.7804878 ],
       [ 20.        ,  98.70875179],
       [  4.        ,  98.27833572],
       [  1.        ,   7.10186514]])

我不知道该怎么做,即使我从第一个中取出最高百分比然后订购它们。

【问题讨论】:

    标签: python arrays sorting numpy


    【解决方案1】:

    您可以为此使用np.lexsort

    >>> a[np.lexsort((a[:, 0], -a[:, 1]))]
    array([[ 21.        ,  98.7804878 ],
           [ 24.        ,  98.7804878 ],
           [ 26.        ,  98.7804878 ],
           [ 30.        ,  98.7804878 ],
           [ 20.        ,  98.70875179],
           [  4.        ,  98.27833572],
           [  1.        ,   7.10186514]])
    

    这按-a[:, 1] 排序,然后按a[:, 0] 排序,返回一个索引数组,而不是您可以用来索引a

    【讨论】:

      猜你喜欢
      • 2014-12-02
      • 2011-02-19
      • 2019-08-17
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多