文章目录

  • 前言
  • 一、问题定义
  • 二、方法讲解
    • 1.基本思路
    • 2.二维数组排序
  • 三、Python List的基本操作
    • 1. 删除
    • 2.插入
  • 总结

前言

最近开始对python语言做一点回顾,碰到一个二维数组的排序问题。一番搜索后,我发现网络上对这个问题的讲解杂乱无章,而且也晦涩难懂,所以,特别写一篇博客,供给有需要的朋友参考。


一、问题定义

先了解一下我们的问题是什么。假设给定一个3X3的二维数组[[2,3,4],[2,4,7],[8,7,5]]。现在想找一个方法,能够按照给定优先级,对这三行做一个大小上的排序。通俗的来说就是,一行数据为(x,y,z),我想先按照x的由大到小排列,再按y由大到小排列,最后按照z由大到小排序,如何实现?

二、方法讲解

1.基本思路

如果不借助工具,我们可以用比如冒泡排序去解决这个问题,下面要介绍的方法是Numpy中的排序函数lexsort(keys, axis=-1),第一个参数代表排序依据的键,第二参数axis可选,表示轴,一般不用。返回值是一个整数索引数组。这样说,你可能还不是很明白,我们看两个示例来了解用法。
(1)有两个数组A、B,先按照A由小到大排列,再按照B的大小由小到大排列。

代码如下(示例):

A = [5, 2, 3]
B = [4, 2, 2]
# 总共三个索引数字0 1 2
# 先按B的大小顺序,如果在B中的数字相同,那么比较在A中的数字大小
arrSortIndex = np.lexsort((A, B))
# 返回排序索引号 1 2 0
print(arrSortIndex)

注意:lexsort函数不直接改变原数组的值,所以要想改变原数组的值,还要做进一步的转化,看下面这个例子:

2.二维数组排序

代码如下:

import numpy as np# 假设有三个三维坐标系坐标,现在按照x,y,z的优先级对坐标从大到小进行排序
arr = [[4, 2, 1], [1, 3, 3], [3, 5, 6]]
# 必须转换格式
arrTemp = np.array(arr)
# arrTemp[:, 2])表示二维数组中的第二列
arrSortIndex = np.lexsort((arrTemp[:, 2], arrTemp[:, 1], arrTemp[:, 0]))
newArr = []
# 直接取出索引 赋值
for num in arrSortIndex:
# 注意这个地方 我用的是arr赋值 而不是arrTempnewArr.append(arr[num])
# 最终结果[[1, 3, 3], [3, 5, 6], [4, 2, 1]]
arr = newArr

特别注意:代码中标注用arr赋值,而不是arrTemp赋值。这是因为arr和arrTemp的数据类型是不一样的,arr是List,而arrTemp是Array,两者的基本操作函数是不能混用的。我们要保持前后数据类型的一致性。

三、Python List的基本操作

1. 删除

2.插入

list = [1, 2, 3, 4]
# 直接插入到列表的最后
list.append(5)
# 1,2,3,4,5
print(list)

总结

以上就是本次介绍的内容!如果对你有帮助的话,请不要吝啬你的点赞哦~

Python数组排序 lexsort函数用法介绍相关推荐

  1. Python os.listdir()函数用法介绍

    os.listdir() 用于返回一个由文件名和目录名组成的列表 下面我们通过一个案例来展示os.lsitdir()方法的用法: 案例要求: 打印系统盘C盘下windows文件夹下的所有文件和目录的路 ...

  2. python中mean的用法_python 的numpy库中的mean()函数用法介绍

    1. mean() 函数定义: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=)[source] Compute the arithm ...

  3. python 的numpy库中的mean()函数用法介绍

    这篇文章主要介绍了python 的numpy库中的mean()函数用法介绍,具有很好对参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 mean() 函数定义: 2 mean()函数功能: 求取均 ...

  4. python中sleep函数用法_sleep函数函数介绍与使用方法详解

    在一些竞猜的网站中,如果我们需要做一个定时执行的功能,比如有一道题,在十秒之内要完成,否则显示"您已超时",如果完成,则跳转到下一道题上面,而这中间有一个十秒的停顿,这样的功能是怎 ...

  5. python average函数怎么用_python 的numpy库中的mean()函数用法介绍

    1. mean() 函数定义: numpy.mean(a, axis=None, dtype=None, out=None, keepdims=)[source] Compute the arithm ...

  6. python Pool常用函数用法总结

    在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...

  7. python中max函数用法_Python中max函数用法实例分析

    Python中max函数用法实例分析 更新时间:2015年07月17日 15:45:09 作者:优雅先生 这篇文章主要介绍了Python中max函数用法,实例分析了Python中max函数的功能与使用 ...

  8. Python binarytree库的用法介绍

    Python binarytree库的用法介绍 binarytree 库是一个 Python 的第三方库.这个库实现了一些二叉树相关的常用方法,使用二叉树时,可以直接调用,不需要再自己实现. 同时,b ...

  9. python lambda函数-Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要 ...

最新文章

  1. 给网页图标字体 Font Awesome 添加动画效果
  2. jQuery基础 (一)—样式篇
  3. 分布式监控之Zabbix-Server
  4. c语言srand函数怎么用_C语言的main函数到底该怎么写
  5. 大学物理质点动力学思维导图_生理学 | 思维导图
  6. mybatis学习(2):基本设置和核心配置
  7. Redis 压缩列表原理与应用分析
  8. js数组遍历和对象遍历
  9. layui根据name获取对象_layui表格行合并;解决侧边固定栏合并
  10. 如何将lnmp 0.5里面的php5.2.14升级到php 5.3.3???
  11. 设计灵感|见过如此吸睛的,单色调Banner设计么?
  12. delphi如何获得select得到的信息_如何建立闭环的笔记体系
  13. COSCon'19 开源治理论坛——技术之外,那些更重要的事
  14. 630. 课程表 III
  15. 尚硅谷谷粒商城之环境搭建
  16. 16进制转换成rgba方法
  17. 小米手机html格式怎么打开,小米手机打开HTML用WPS
  18. linux下namp简单使用
  19. 如何在服务器里面新建文件夹,怎么在云服务器新建文件夹
  20. STM32CubeMX学习笔记(38)——FSMC接口使用(TFT-LCD屏显示)

热门文章

  1. Java进阶专题(八) 设计模式之适配器模式、装饰者模式、观察者模式
  2. pytest-fixture应用
  3. 对积极性不高的员工处理办法
  4. Pytorch:Tensor的统计属性【norm:范数】、【mean、sum】【prod:累乘】【argmin、argmax:最值索引】【keepdim】【kthvalue:第k小的元素、topk】
  5. proxy跨域不生效_配置proxy解决跨域问题
  6. 文明与征服武则天邪道阵容,教你以弱胜强(T3打T4)
  7. 需求分析(Requirements Analysis)
  8. JAVA: 初级项目之基于Swing界面的仿QQ(三)
  9. EBU6304 Software Engineering 知识点总结_4 analysis, design, implementation, testing
  10. tokudb 安装mysql_tokuDB 安装与备份小记