加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在numpy中有多个排序键的Sortrows

发布时间:2020-12-16 21:36:27 所属栏目:Python 来源:网络整理
导读:我没有在SO上找到这个答案,所以我在这里分享: 问题:当有多个排序键时,如何在matlab中模拟sortrows功能?在matlab中,这看起来像是: sortrows(x,[3,-4]) 首先按第3列排序,然后按第2列排序. 如果按一列排序,可以使用np.argsort查找该列的索引,并应用这些索引
我没有在SO上找到这个答案,所以我在这里分享:

问题:当有多个排序键时,如何在matlab中模拟sortrows功能?在matlab中,这看起来像是:

sortrows(x,[3,-4])

首先按第3列排序,然后按第2列排序.

如果按一列排序,可以使用np.argsort查找该列的索引,并应用这些索引.但是你如何为多列做到这一点?

解决方法

语法非常笨拙并且看起来很奇怪,但最干净的事情是 np.lexsort.
data = np.array([[3,.24],[4,1,.41],[2,.63],[1,3,.38]]) #imagine rows of a spreadsheet
#now do sortrows(data,-4])
ix = np.lexsort((data[:,3][::-1],data[:,2])) 
#this yields [0,2,3]

#note that lexsort sorts first from the last row,so sort keys are in reverse order

data[ix]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读