python3.x - python中有沒有直接對多維數(shù)組排序的方法?
問題描述
如何按第一列的降序排列如下數(shù)組:
dl1 = numpy.array([[ 0.02598003,1.], [ 0.00730082,2.], [ 0.05471569,3.], [ 0.02599167,4.], [ 0.0544947 ,5.], [ 0.00753346,6.]])
網(wǎng)上其他地方說直接dl1.sort()會默認(rèn)按第一列排序,但好像不行
問題解答
回答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 是把各維分別排序的
如果你是要二維組的聯(lián)合排序,要用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.]])>>>
如果數(shù)據(jù)很多的話,用python內(nèi)部的 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的關(guān)鍵字參數(shù)axis就是用來按照某列排序
axis : int, optional
Axis along which to sort. Default is -1, which means sort along the last axis.
相關(guān)文章:
1. css - 如何使用 vue transition 實現(xiàn) ios 按鈕一樣的平滑切換效果2. angular.js - 關(guān)于$apply()3. mysql - 把一個表中的數(shù)據(jù)count更新到另一個表里?4. 網(wǎng)絡(luò)傳輸協(xié)議 - 以下三種下載方式有什么不同?如何用python模擬下載器下載?5. mysql數(shù)據(jù)庫做關(guān)聯(lián)一般用id還是用戶名6. 關(guān)于python切片的問題7. linux - 升級到Python3.6后GDB無法正常運行?8. mysql 里邊,自增長id,寫數(shù)據(jù)時,是先把數(shù)據(jù)寫進(jìn)去,然后再給這條數(shù)據(jù)一個id,還是先給id,然后再把要插入的數(shù)據(jù)寫進(jìn)去9. 多維數(shù)組如何在視圖中渲染10. javascript - 前端怎樣實現(xiàn)圖片剪切一部分上傳呢?像微信或者QQ上傳那樣呢?用的啥技術(shù)
