2016-09-24 83 views
2

我想按numpy排序數組中的第一行。按行排序數組

例如:

import numpy as np 

test = np.array([[1334.71601720318, 930.9757468052002, 1018.7038817663818], 
     [0.0, 1.0, 2.0], 
     [ np.array([[ 667, 1393], 
     [1961, 474]]), 
     np.array([[ 673, 1389], 
     [ 847, 1280]]), 
     np.array([[ 726, 1077], 
     [ 898, 961]])]], dtype=object) 

我想行進行排序:

[1334.71601720318, 930.9757468052002, 1018.7038817663818] 

獲得:

np.array([[930.9757468052002, 1018.7038817663818, 1334.71601720318], 
     [1.0, 2.0 ,0.0], 
     [ np.array([[ 673, 1389], 
     [ 847, 1280]]), 
     np.array([[ 726, 1077], 
     [ 898, 961]])], 
     np.array([[ 667, 1393], 
     [1961, 474]])], dtype=object) 

----編輯LATER ----

我嘗試過:sorted(test,key = lambda row:row [1]) 但是我收到了一條錯誤消息:「具有多個元素的數組的真值是不明確的。使用a.any()或a.all()」

回答

3

我覺得test[:, np.argsort(test[0]) ]應該做的伎倆

+0

完美;。!)感謝您的幫助 – user3601754