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. python3的各种库的官方文档中文版在哪儿可以找到2. 关于登录界面不跳转3. php - 两个表数据怎么插到一个模板中,并按时间排序?4. 前端 - html5 audio不能播放5. java - 如何将一张普通图片转成64级灰度图片?6. javascript - js读取excel其中一列中的一个值是0.3556但是读出来是0.35559999999999997?7. python - 如何使用websocket在网页上动态示实时数据的折线图?8. nosql - mongodb 多组数据不固定字段查询问题 [百度党请绕道]9. Browser-sync安装失败问题10. Ghost安装Win8出现1868问题的解决方案

网公网安备