2016-07-06 78 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]])