沿维度对多维numpy数组进行排序

时间:2016-07-06 16:17:53

标签: python arrays sorting numpy

让我们说我有一个2D numpy数组,我想把它排序好像它是一个标准的Python列表,即将它们的行本身放入(词典)顺序,而不是沿轴的单元格。所以从这个:

>>> a = np.array([[1, 3], [2, 1], [1, 2]]
array([[1, 3],
       [2, 1],
       [1, 2]])

我想到达这个:

array([[1, 2],
       [1, 3],
       [2, 1]])

不幸的是,这并不容易:

>>> np.sort(a, axis=0)
array([[1, 1],
       [1, 2],
       [2, 3]])

>>> sorted(list(a))
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

>>> np.sort(list(a))
array([[1, 1],
       [1, 2],
       [2, 3]])

我知道这可能(应该!)是超级基本的,但我不能,因为我的生活,弄清楚如何去做。谢谢!

1 个答案:

答案 0 :(得分:0)

好的,没关系,重复Sorting a 2D numpy array by multiple axes;只需使用lexsort(或该问题下的其他替代方案):

>>> a[np.lexsort((a[:, 1], a[:, 0]))]
array([[1, 2],
       [1, 3],
       [2, 1]])