【问题标题】:Sorting 2-dimensional array by 2nd column and then 1st column按第 2 列和第 1 列对二维数组进行排序
【发布时间】:2019-05-02 00:31:59
【问题描述】:

我有一个简单的二维数组,我想按第 2 列中的条目排序,如果第 2 列中存在相同的条目,则也按第 1 列排序并返回这个新数组的索引来自原始数组a。这是起点:

import numpy as np
a = np.array([[0.1,2.134],[0.2,3.02],[0.1,2.5],[0.3,2.134],[0.1,3.02]])
a
>>> array([[0.1  , 2.134],
   [0.2  , 3.02 ],
   [0.1  , 2.5  ],
   [0.3  , 2.134],
   [0.1  , 3.02 ]])

然后我可以按第二列排序以生成:

b = a[a[:,1].argsort()]
b
>>> array([[0.1  , 2.134],
   [0.3  , 2.134],
   [0.1  , 2.5  ],
   [0.2  , 3.02 ],
   [0.1  , 3.02 ]])

但我希望这另外按第一列排序。我想要的从a 开始的输出是:

>>> array([[0.1  , 2.134],
   [0.3  , 2.134],
   [0.1  , 2.5  ],
   [0.1  , 3.02 ],
   [0.2  , 3.02 ]])

连同这个新数组的相应索引。

【问题讨论】:

标签: arrays python-3.x numpy sorting


【解决方案1】:

IIUClexsort

a[np.lexsort((a[:,0], a[:,1]))]
array([[0.1  , 2.134],
       [0.3  , 2.134],
       [0.1  , 2.5  ],
       [0.1  , 3.02 ],
       [0.2  , 3.02 ]])

【讨论】:

    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2014-05-11
    • 2014-09-22
    相关资源
    最近更新 更多