# NumPy排序和搜索算法示例

Numpy提供了多种用于排序和搜索的功能。有多种排序算法, 例如quicksort, merge sort和heapsort, 是使用numpy.sort()函数实现的。

SN Algorithm 最坏情况下的复杂性
1 Quick Sort O(n ^ 2)
2 Merge Sort O(n * log(n))
3 堆排序 O(n * log(n))

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

SN Parameter Description
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)]``````

### 例子

``````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``````

### 例子

``````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``````

### 例子

``````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]), )``````

### 例子

``````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]))``````

• 回顶