2016-11-30 96 views
1

我有一個numpy數組,我想排序行。排序一個numpy數組

>>f1 
    array([['b', '3'], 
      ['v', '7'], 
      ['a', '1'], 
      ['a', '0'], 
      ['a', '5'], 
      ['f', '7'], 
      ['f', '5'], 
      ['a', '2'], dtype=object) 

我使用排序()和我越來越喜歡這個

>> f1.sort() 
    >> print f1 
    [['3' 'b'] 
    ['7' 'v'] 
    ['1' 'a'] 
    ['0' 'a'] 
    ['5' 'a'] 
    ['7' 'f'] 
    ['5' 'f'] 
    ['2' 'a']] 

但我需要的是,

[['a' '0'] 
    ['a' '1'] 
    ['a' '2'] 
    ['a' '5'] 
    ['b' '3'] 
    ['f' '5'] 
    ['f' '7'] 
    ['v' '7']] 

有人可以幫助我

+0

如何,我們有'[ 'A' '7']'在O/p? – Divakar

回答

0

NumPy的排序接受要排序的軸:

from numpy import array 

f= array([['b', '3'], 
      ['v', '7'], 
      ['a', '1'], 
      ['a', '0'], 
      ['a', '5'], 
      ['f', '7'], 
      ['f', '5'], 
      ['a', '2']]) 

f.sort(0) 
print f 

我得到:

[['a' '0'] 
['a' '1'] 
['a' '2'] 
['a' '3'] 
['b' '5'] 
['f' '5'] 
['f' '7'] 
['v' '7']] 

編輯:

我才意識到這可能不是你想要的。 numpy在所有可能的遍歷中對軸進行排序(例如,在這種情況下,分別對每個列進行排序)。由第一指數做一個 '行' 分類方式:

print array(sorted(f,key=lambda x: list(x))) 

NM,顯然這樣做是正確的第一次:)