python 实现多维数组(array)排序


Posted in Python onFebruary 28, 2020

关于多维数组如何复合排序

如数组:

>>> import numpy as np
>>> data = np.array([[2,2,5],[2,1,3],[1,2,3],[3,1,4]])
>>>> data
array([[2, 2, 5],
  [2, 1, 3],
  [1, 2, 3],
  [3, 1, 4]])

将数组先按照第一列升序,第二列升序,第三列升序的方式排序:

>>> idex=np.lexsort([data[:,2], data[:,1], data[:,0]])
>>> sorted_data = data[idex, :]
>>> sorted_data
array([[1, 2, 3],
  [2, 1, 3],
  [2, 2, 5],
  [3, 1, 4]])

然后将数组按照第一列降序,第二列升序,第三列升序的方式排序:

>>> idex=np.lexsort([data[:,2], data[:,1], -1*data[:,0]])
>>> sorted_data = data[idex, :]
>>> sorted_data
array([[3, 1, 4],
  [2, 1, 3],
  [2, 2, 5],
  [1, 2, 3]])

补充拓展:python:对多维数组的降序排列

在python中,遗憾的一点是没有对多维数组按照指定维度进行降序排列的方法。

但是,有对一维数组的降序排列,这就足够了!

# Author: Right.Q
# 实现多维矩阵的逆序排列
 
def descend_sort(array):
 '''对三维数组倒序排列'''
 [height, width, channel] = array.shape
 sortArray = np.zeros([height, width, channel])
 for h in range(height):
  for w in range(width):
   sortArray[h, w, :] = sorted(array[h, w, :], reverse=True)
 
 return sortArray

形参是指定的三维数组,如果更多维的话,自动识别维度即可。

以上这篇python 实现多维数组(array)排序就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python用for循环实现九九乘法表
May 31 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Django框架教程之中间件MiddleWare浅析
Dec 29 Python
Python3列表List入门知识附实例
Feb 09 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 Python
Python unittest基本使用方法代码实例
Jun 29 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
Selenium webdriver添加cookie实现过程详解
Aug 12 Python
Python 实现一个简单的web服务器
Jan 03 Python
详解Python生成器和基于生成器的协程
Jun 03 Python
python数字图像处理:图像简单滤波
Jun 28 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 #Python
Python使用Socket实现简单聊天程序
Feb 28 #Python
在python3中使用shuffle函数要注意的地方
Feb 28 #Python
Python对称的二叉树多种思路实现方法
Feb 28 #Python
pycharm如何实现跨目录调用文件
Feb 28 #Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 #Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 #Python
You might like
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
php分页代码学习示例分享
2014/02/20 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
javascript实现tab响应式切换特效
2016/01/29 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
Vue修改项目启动端口号方法
2019/11/07 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
opencv 阈值分割的具体使用
2020/07/08 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
简述数据库的设计过程
2015/06/22 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
考试不及格检讨书
2014/01/09 职场文书
《青山不老》教学反思
2016/02/22 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis