我没有在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]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。