2016-11-30 95 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,显然这样做是正确的第一次:)