linux cpu占用率如何看
270
2022-09-26
numpy基础(part13)--排序
学习笔记,这个笔记以例子为主。 开发工具:Spyder
文章目录
排序
联合间接排序lexsort复数数组排序sort_complex插入排序searchsorted
排序
我们可以简单的,直接的对数组进行排序,并返回有序数组。
语法
有序数组 = np.msort(待排序数组)
例子
代码:
import numpy as npnum = np.array([1, 7, 3, 2, 9, 5, 3])sorted_num = np.msort(num)print('排序后数组:', sorted_num)
结果:
排序后数组: [1 2 3 3 5 7 9]
联合间接排序lexsort
联合间接排序支持为主序列进行排序,若存在主序列值相同,则利用次要序列1作为参考继续排序,以此类推,最终返回排序过后的有序索引数组。
语法
indices = numpy.lexsort((次要序列k,..., 次要序列1, 主序列))
例子1
先按照weight排序,再按照age排序,再按照id_num排序。(都是升序排序)
代码:
import numpy as npnames = np.array(['A', 'B', 'C', 'D', 'E', 'F', 'G'])weight = [7, 4, 3, 5, 8, 3, 4]age = [8, 7, 2, 3, 8, 3, 7]id_num = list(range(1, 8))index_num = np.lexsort((id_num, age, weight))print(names[index_num])
结果:
['C' 'F' 'B' 'G' 'D' 'A' 'E']
例子2
先按照weight升序排序,再按照age升序排序,再按照id_num降序排序。
代码:
import numpy as npnames = np.array(['A', 'B', 'C', 'D', 'E', 'F', 'G'])weight = [7, 4, 3, 5, 8, 3, 4]age = [8, 7, 2, 3, 8, 3, 7]id_num = np.array(list(range(1, 8))) index_num = np.lexsort((-id_num, age, weight))print(names[index_num])
备注:降序排列可以在数组前加-负号,但是要将数组转换成ndarray数组才能进行负号运算,普通列表则不能进行此运算。
结果:
['C' 'F' 'G' 'B' 'D' 'A' 'E']
复数数组排序sort_complex
按照实部的升序排列,对于实部相同的元素,参考虚部的升序,直接返回排序后的结果数组。
语法
numpy.sort_complex(复数数组)
例子
代码:
import numpy as npnum = np.array([2 + 3j, 1 + 2j, 5 + 1j, 8 - 2j, 8 + 1j, 2 + 1j])sorted_num = np.sort_complex(num)print(sorted_num)
结果:
[ 1.+2.j 2.+1.j 2.+3.j 5.+1.j 8.-2.j 8.+1.j]
插入排序searchsorted
若需要向有序数组中插入元素,使数组依然有序,numpy提供了searchsorted方法,返回待插入元素的可插入位置数组。
语法
indices = numpy.searchsorted(有序序列, 待插序列)
例子
代码:
import numpy as npa = np.array([1, 2, 4, 5, 7])b = np.array([3, 6])c = np.searchsorted(a, b)print(c)d = np.insert(a, c, b)print(d)
备注:numpy提供的insert方法,可向原数组的指定位置插入元素。比如,A为原数组,B为索引数组,C为待插入元素数组。 insert(A, B, C)为向A的B位置插入C数据。
结果:
[2 4][1 2 3 4 5 6 7]
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~