NumPy 排序和搜索

2024 年 8 月 29 日 | 阅读 3 分钟

Numpy 提供了各种用于排序和搜索的函数。 有各种排序算法,如快速排序,归并排序和堆排序,这些算法是使用 numpy.sort() 函数实现的。

在函数调用中必须提及在排序操作中使用的排序算法的类型。

让我们讨论在 numpy.sort() 中实现的排序算法

序号算法最坏情况复杂度
1快速排序O (n ^ 2)
2合并排序O (n * log(n))
3堆排序O (n * log(n))

下面给出了使用 numpy.sort() 函数的语法。

它接受以下参数。

序号参数描述
1输入它代表要排序的输入数组。
2它表示要排序数组的轴。如果未提及轴,则沿着最后一个可用轴进行排序。
3类型它表示在排序时要使用的排序算法的类型。 默认值为快速排序。
4顺序它代表要排序的字段,如果数组包含字段。

请看以下示例。

示例

输出

Sorting along the columns:
[[ 2  3 10]
 [ 4  5  6]
 [ 7  8  9]]
Sorting along the rows:
[[ 4  2  3]
 [ 7  5  6]
 [10  8  9]]
Sorting data ordered by name
[(b'John', 251) (b'Mukesh', 200)]

numpy.argsort() 函数

此函数用于对输入数组执行间接排序,也就是说,它返回数据索引的数组,该索引用于构造排序后的数据数组。

请看以下示例。

示例

输出

Original array:
 [90 29 89 12]
Printing indices of sorted data
 [3 1 2 0]
printing sorted array
12 29 89 90 

numpy.lexsort() 函数

此函数用于使用间接的键序列对数组进行排序。 此函数的执行方式与 numpy.argsort() 类似,它返回排序后数据的索引数组。

请看以下示例。

示例

输出

printing indices of sorted data
[0 3 1 4 2]
using the indices to sort the array
a 12
d 12
b 90
e 211
c 380

numpy.nonzero() 函数

此函数用于查找数组中非零元素的位置。

请看以下示例。

示例

输出

printing original array [ 12  90 380  12 211]
printing location of the non-zero elements
(array([0, 1, 2, 3, 4]),)

numpy.where() 函数

此函数用于返回满足特定条件的所有元素的索引。

请看以下示例。

示例

输出

(array([1, 2, 4]),)
(array([0, 1, 1]), array([1, 0, 1]))

下一个主题NumPy 副本和视图