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. javascript - 微信報(bào)redirect_uri參數(shù)錯誤2. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯了?3. android - 類似微信朋友圈或者QQ空間說說那種點(diǎn)擊圖片放大,并且有放大縮小手勢,左右滑動圖片手勢效果4. javascript - 如何計(jì)算字符串寬度?5. angular.js - ng-model如何綁定二選一的單選項(xiàng)框?6. java - 初學(xué)SSM 在import自己寫的包下的類的時(shí)候飄紅,求大神解答?7. 網(wǎng)頁動畫等過渡效果,CSS3 transitions 和 jQuery animations 誰實(shí)現(xiàn)的性能更好?8. 怎么在HTML5中播放VR視頻9. java - Atom中文問題10. win10系統(tǒng) php安裝swoole擴(kuò)展
