目录
1、排序函数
下表是对各种排序算法的平均速度、最快情况性能、工作空间大小和稳定性的比较。
种类 | 速度 | 最坏情况 | 工作空间 | 稳定性 |
---|---|---|---|---|
'quicksort' | 1 | O(n^2) | 0 | 不稳定 |
'heapsort' | 3 | O(n*log(n)) | 0 | 不稳定 |
'mergesort' | 2 | O(n*log(n)) | ~n/2 | 稳定 |
① sort函数
返回数组元素升序排序结果。不会修改原数组中元素顺序。
可以使用参数kind指定排序算法。kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}
arr = np.array([1, 3, 5, 2, 0, 9, 6, 8, 4])
print("arr:", arr, "np.sort(arr):", np.sort(arr),
"sorted(arr, reverse=True):", sorted(arr, reverse=True), sep="\n")
# arr:
# [1 3 5 2 0 9 6 8 4]
# np.sort(arr):
# [0 1 2 3 4 5 6 8 9]
# sorted(arr, reverse=True):
# [9, 8, 6, 5, 4, 3, 2, 1, 0]
如果想要降序排序,可以使用函数sorted函数。
② argsort函数
返回数组升序排序后的索引值。不会修改原数组中元素顺序。
print("-" * 32, "argsort", "-" * 32)
arr = np.array([1, 3, 5, 2, 0, 9, 6, 8, 4])
print("arr:", arr, "np.argsort(arr):", np.argsort(arr), sep="\n")
# arr:
# [1 3 5 2 0 9 6 8 4]
# np.argsort(arr):
# [4 0 3 1 8 2 6 7 5]
2、搜索函数
① argmin函数。返回最小元素的索引值。
② argmax函数。返回最大元素的索引值。
print("-" * 32, "搜索函数", "-" * 32)
arr = np.array([1, 3, 5, 2, 0, 9, 6, 8, 4])
print("arr:", arr, "np.argmin(arr):", np.argmin(arr), "np.argmax(arr):", np.argmax(arr), sep="\n")
# arr:
# [1 3 5 2 0 9 6 8 4]
# np.argmin(arr):
# 4
# np.argmax(arr):
# 5
3、条件搜索
① where函数。where(condition, [x, y])等价于condition ? x : y。如果满足条件返回x否则返回y。
② extract函数。返回数组中满足条件的元素。
print("-" * 32, "条件搜索", "-" * 32)
arr = np.array([1, 3, 5, 2, 0, 9, 6, 8, 4])
print("arr:", arr, "np.where(arr > 4, 1, 0):", np.where(arr > 4, 1, 0),
"np.extract(arr > 4, arr):", np.extract(arr > 4, arr), sep="\n")
# arr:
# [1 3 5 2 0 9 6 8 4]
# np.where(arr > 4, 1, 0):
# [0 0 1 0 0 1 1 1 0]
# np.extract(arr > 4, arr):
# [5 9 6 8]