2016-02-13 47 views
1

我已經寫這種種在第二列的多維numpy的陣列以升序一個Python代碼錯誤輸出,同時排序numpy的陣列

import numpy as np 
xt = [['S_P' , '9' ,'42'],['S_SB', '9', '30'],['C_G' ,'14', '17'],['T_G', '12' ,'25'],['C_O' ,'14' ,'34'],['C_P' ,'14', '39'],['C_SB' ,'14' ,'20'],['T_O','12' ,'39']] 

xb = sorted(xt , key=lambda x: x[1]) 
xb = np.array(xb) 
print xb 

輸出是

[['T_G' '12' '25'] 
['T_O' '12' '39'] 
['C_G' '14' '17'] 
['C_O' '14' '34'] 
['C_P' '14' '39'] 
['C_SB' '14' '20'] 
['S_P' '9' '42'] 
['S_SB' '9' '30']] 

,我期待是該outout

> [['S_P' '9' '42'] 
>  ['S_SB' '9' '30'] 
>  ['T_G' '12' '25'] 
>  ['T_O' '12' '39'] 
>  ['C_G' '14' '17'] 
>  ['C_O' '14' '34'] 
>  ['C_P' '14' '39'] 
>  ['C_SB' '14' '20']] 

我使用Python 2.7

+0

輸出沒有錯,您的期望是。 – Goyo

+0

@Goyo ya ....... – RoY

回答

2

我想你錯過了int調用。它目前正在對第一個值進行排序,就像它們是字符串一樣。在這種情況下'12'小於'9'。

xb = sorted(xt , key=lambda x: int(x[1])) 
xb = np.array(xb) 
print xb 
+0

感謝U先生.... – RoY