NumPy 排序和搜索
NumPy提供了各种排序和搜索的函数。有各种排序算法,比如快速排序、归并排序和堆排序,这些都是使用numpy.sort()函数实现的。
在排序操作中使用的排序算法的类型必须在函数调用中提到。
让我们讨论一下在numpy.sort()中实现的排序算法。
序号 | 算法 | 最差情况的复杂度 |
---|---|---|
1 | Quick Sort | O (n ^ 2) |
2 | Merge Sort | O (n * log(n)) |
3 | Heap Sort | O (n * log(n)) |
使用numpy.sort()函数的语法如下。
numpy.sort(a, axis, kind, order)
它接受以下参数。
SN | 参数 | 描述 |
---|---|---|
1 | input | 它表示要排序的输入数组。 |
2 | axis | 它表示要沿着哪个轴进行排序的数组。如果未提及轴,则沿着最后一个可用轴进行排序。 |
3 | kind | 它表示在排序过程中要使用的排序算法的类型。默认为快速排序。 |
4 | order | 它表示按照哪个字段对数组进行排序的情况下的字段。 |
考虑以下示例。
示例
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])
输出:
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]))