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

在函数调用中必须指定要在排序操作中使用的排序算法的类型。

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

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

使用numpy.sort()函数的语法如下:

numpy.sort(a, axis, kind, order)

它接受以下参数。

序号参数描述
1input表示要排序的输入数组。
2axis表示要沿其排序数组的轴。如果未提及轴,则会在最后一个可用轴上进行排序。
3kind表示在排序时要使用的排序算法的类型。默认为快速排序。
4order如果数组包含字段,则表示按哪个字段对数组进行排序。

考虑以下示例。

示例

import numpy as np  
  
a = np.array([[10,2,3],[4,5,6],[7,8,9]])  
  
print("Sorting along the columns:")  
print(np.sort(a))  
  
print("Sorting along the rows:")  
print(np.sort(a, 0))  
  
data_type = np.dtype([('name', 'S10'),('marks',int)])  
  
arr = np.array([('Mukesh',200),('John',251)],dtype = data_type)  
  
print("Sorting data ordered by name")  
  
print(np.sort(arr,order = 'name'))  

输出:

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()函数

此函数用于对输入数组执行间接排序,即返回数据的索引数组,该索引数组用于构建排序后的数据数组。

考虑以下示例。

示例

import numpy as np  
  
a = np.array([90, 29, 89, 12])  
  
print("Original array:\n",a)  
  
sort_ind = np.argsort(a)  
  
print("Printing indices of sorted data\n",sort_ind)  
  
sort_a = a[sort_ind]  
  
print("printing sorted array")  
  
for i in sort_ind:  
    print(a[i],end = " ")  

输出:

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(),后者返回已排序数据的索引数组。

考虑以下示例。

示例

import numpy as np  
  
a = np.array(['a','b','c','d','e'])  
  
b = np.array([12, 90, 380, 12, 211])  
  
ind = np.lexsort((a,b))  
  
print("printing indices of sorted data")  
  
print(ind)  
  
print("using the indices to sort the array")  
  
for i in ind:  
    print(a[i],b[i])  
c 380

输出:

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()函数

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

考虑以下示例。

示例

import numpy as np  
  
b = np.array([12, 90, 380, 12, 211])  
  
print("printing original array",b)  
  
print("printing location of the non-zero elements")  
  
print(b.nonzero())  

输出:

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

numpy.where()函数

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

考虑以下示例。

示例

import numpy as np  
  
b = np.array([12, 90, 380, 12, 211])  
  
print(np.where(b>12))  
  
c = np.array([[20, 24],[21, 23]])  
  
print(np.where(c>20))

输出:

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

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶