请选择 进入手机版 | 继续访问电脑版
楼主: casey_c
695 1

[程序分享] 数组排序 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.0091
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

casey_c 发表于 2016-12-9 10:37:20 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在 Python 中,对一个数组中的元素进行排序的方式有很多。例如,利用 Numpy 库中的函数,我们可以自己构造排序函数:
  1. import numpy as np

  2. def selection_sort(x):
  3.     for i in range(len(x)):
  4.         swap = i + np.argmin(x[i:])
  5.         (x[i], x[swap]) = (x[swap], x[i])
  6.     return x
复制代码
  1. x = np.array([2, 1, 4, 3, 5])
  2. selection_sort(x)
复制代码
1.png

可以看到,上面的函数很好地实现了我们想要的排序效果。类似的,我们也可以构造一个bogo排序函数来达到相同的目的:
  1. def bogosort(x):
  2.     while np.any(x[:-1] > x[1:]):
  3.         np.random.shuffle(x)
  4.     return x
复制代码
  1. x = np.array([2, 1, 4, 3, 5])
  2. bogosort(x)
复制代码

实际上,上面的两种方法都略显繁琐了,在 Numpy 中自带的函数 sort 可以轻而易举的帮助我们解决数组元素排序的问题:
  1. x = np.array([2, 1, 4, 3, 5])
  2. np.sort(x)
复制代码

除此之外,Python 其实内置了排序函数,如果我们仅是想单纯对某个序列的元素进行排序的话,甚至连 Numpy 库都不需要导入了:
  1. x.sort()
  2. print(x)
复制代码
2.png

Numpy 中的函数 argsort 则可以帮我们构建一个序号序列,用于锚定原数组元素排序后的位次:
  1. x = np.array([2, 1, 4, 3, 5])
  2. i = np.argsort(x)
  3. print(i)
复制代码
3.png

  1. x[i]
复制代码

对于多维数组,Numpy 中的函数 sort 可以帮助我们实现对于指定维度上元素的排序:
  1. rand = np.random.RandomState(42)
  2. X = rand.randint(0, 10, (4, 6))
  3. print(X)
复制代码
4.png

  1. # 对 X 的每一列进行排序
  2. np.sort(X, axis=0)
复制代码
5.png

  1. # 对 X 的每一行进行排序
  2. np.sort(X, axis=1)
复制代码
6.png


以上内容转自数析学院,原文后续还有临近点连线等实际应用案例,感兴趣的同学可以去数析学院网站查看原文
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Selection Election shuffle random Select import 元素

casey_c 发表于 2016-12-12 17:05:02 |显示全部楼层 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 15:30