- import numpy as np
- def selection_sort(x):
- for i in range(len(x)):
- swap = i + np.argmin(x[i:])
- (x[i], x[swap]) = (x[swap], x[i])
- return x
- x = np.array([2, 1, 4, 3, 5])
- selection_sort(x)
可以看到,上面的函数很好地实现了我们想要的排序效果。类似的,我们也可以构造一个bogo排序函数来达到相同的目的:
- def bogosort(x):
- while np.any(x[:-1] > x[1:]):
- np.random.shuffle(x)
- return x
- x = np.array([2, 1, 4, 3, 5])
- bogosort(x)
实际上,上面的两种方法都略显繁琐了,在 Numpy 中自带的函数 sort 可以轻而易举的帮助我们解决数组元素排序的问题:
- x = np.array([2, 1, 4, 3, 5])
- np.sort(x)
除此之外,Python 其实内置了排序函数,如果我们仅是想单纯对某个序列的元素进行排序的话,甚至连 Numpy 库都不需要导入了:
- x.sort()
- print(x)
Numpy 中的函数 argsort 则可以帮我们构建一个序号序列,用于锚定原数组元素排序后的位次:
- x = np.array([2, 1, 4, 3, 5])
- i = np.argsort(x)
- print(i)
- x[i]
对于多维数组,Numpy 中的函数 sort 可以帮助我们实现对于指定维度上元素的排序:
- rand = np.random.RandomState(42)
- X = rand.randint(0, 10, (4, 6))
- print(X)
- # 对 X 的每一列进行排序
- np.sort(X, axis=0)
- # 对 X 的每一行进行排序
- np.sort(X, axis=1)
以上内容转自数析学院,原文后续还有临近点连线等实际应用案例,感兴趣的同学可以去数析学院网站查看原文


雷达卡




京公网安备 11010802022788号







