2016-07-06 43 views
0

假设我有一个2D numpy数组,并且我想将它排序,就好像它是一个标准的Python列表,即将其行按照(字典顺序)排序,而不是沿轴的细胞。所以从这个:沿维度对多维numpy数组排序

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

我知道这可能(应该!)是超级基本的,但我不能,在我的生活中,找出如何去做。谢谢!

回答

0

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

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