Python科学计算库Numpy之 排序、搜索和计数函数
NumPy - 排序、搜索和计数函数
NumPy中提供了各种排序相关功能。 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。
种类
速度
最坏情况
工作空间
稳定性
'quicksort'
(快速排序)
1
O(n^2)
0
否
'mergesort'
(归并排序)
2
O(n*log(n))
~n/2
是
'heapsort'
(堆排序)
3
O(n*log(n))
0
否
numpy.sort(a, axis, kind, order)
序号
参数及描述
a
要排序的数组
axis
沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序
kind
默认为'quicksort'
(快速排序)
order
如果数组包含字段,则是要排序的字段
代码举例:
import numpy as np
a = np.array([[3, 7], [9, 1]])
print(np.sort(a))
print(np.sort(a, axis=0))
dt = np.dtype([(‘name’, ‘S10’), (‘age’, int)])
a = np.array([(“raju”, 21), (“anil”, 25), (“ravi”, 17), (“amar”, 27)], dtype=dt)
print(np.sort(a, order=‘age’))
x = np.array([3, 1, 2])
print(x[np.argsort(x)]) # numpy.argsort()函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组。 这个索引数组用于构造排序后的数组
nm = (‘raju’, ‘anil’, ‘ravi’, ‘amar’)
dv = (‘f.y.’, ‘s.y.’, ‘s.y.’, ‘f.y.’)
ind = np.lexsort((dv, nm))
# 函数使用键序列执行间接排序。 键可以看作是电子表格中的一列。 该函数返回一个索引数组,使用它可以获得排序数据。 注意,最后一个键恰好是 sort 的主键
print([nm[i] + ", " + dv[i] for i in ind])
a = np.array([[30, 17, 70], [80, 0, 10], [50, 90, 60]])
‘’’
numpy.argmax() 和 numpy.argmin()
这两个函数分别沿给定轴返回最大和最小元素的索引。
‘’’
print(np.argmax(a))
print(np.argmax(a, axis=0))
print(np.nonzero(a)) # 函数返回输入数组中非零元素的索引
print(a[np.where(a > 40)]) # where()函数返回输入数组中满足给定条件的元素的索引
print(np.extract(np.mod(a, 2) == 0, a)) # where()函数返回输入数组中满足给定条件的元素的索引
print(a.flatten())