2016-09-24 86 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