python3.x - python中有沒有直接對多維數組排序的方法?
問題描述
如何按第一列的降序排列如下數組:
dl1 = numpy.array([[ 0.02598003,1.], [ 0.00730082,2.], [ 0.05471569,3.], [ 0.02599167,4.], [ 0.0544947 ,5.], [ 0.00753346,6.]])
網上其他地方說直接dl1.sort()會默認按第一列排序,但好像不行
問題解答
回答1:sorted(dl1, key=lambda x: x[0])回答2:
>>> a=np.array([[ 0.02598003,1.], [ 0.00730082,2.], [ 0.05471569,3.], [ 0.02599167,4.], [ 0.0544947 ,5.], [ 0.00753346,6.]])>>> a.sort(0)>>> aarray([[ 0.00730082, 1.], [ 0.00753346, 2.], [ 0.02598003, 3.], [ 0.02599167, 4.], [ 0.0544947 , 5.], [ 0.05471569, 6.]])>>>
np.sort 是把各維分別排序的
如果你是要二維組的聯合排序,要用np.argsort方法
>>> a=np.array([[ 0.02598003,1.], [ 0.00730082,2.], [ 0.05471569,3.], [ 0.02599167,4.], [ 0.0544947 ,5.], [ 0.00753346,6.]])>>> a[a.argsort(0)[:,0]]array([[ 0.00730082, 2.], [ 0.00753346, 6.], [ 0.02598003, 1.], [ 0.02599167, 4.], [ 0.0544947 , 5.], [ 0.05471569, 3.]])>>>
如果數據很多的話,用python內部的 sorted會降低效率
回答3:In [1]: lst= [[0.00730082, 2.0], ...: [0.05471569, 3.0], ...: [0.02599167, 4.0], ...: [0.0544947, 5.0], ...: [0.00753346, 6.0]] ...:In [2]: sorted(lst, key=lambda x: x[0])Out[2]:[[0.00730082, 2.0], [0.00753346, 6.0], [0.02599167, 4.0], [0.0544947, 5.0], [0.05471569, 3.0]]回答4:
dl1.sort(axis=0)
ndarray.sort的關鍵字參數axis就是用來按照某列排序
axis : int, optional
Axis along which to sort. Default is -1, which means sort along the last axis.
相關文章:
1. 點擊頁面就自動輸入到mysql.求解2. java - IDEA從SVN檢出項目 并在tomcat上運行 求詳細流程3. javascript - windos下第一次用Django無法正確創建工程目錄4. java - 多叉樹求值,程序高手,算法高手看過來5. node.js - 帶有node_modules目錄的項目,用phpstorm打開速度極慢,怎么解決?6. node.js - nodejs使用formidable上傳文件問題7. 誰能告訴我php7+tp5.1時遇到使用session::set()問題8. 有么有大神解釋下這是什么意思?通過這可以知道網站的每天的訪問量?9. 為什么我的switch自動輸出了第一個case?10. 單擊登錄按鈕無反應
