圖片來源:(https://forum.gamer.com.tw/Co.php?bsn=43473&sn=45361)
numpy.sort()
返回一個已排序的陣列副本,不修改原始陣列
import numpy as np
arr = np.array([3, 1, 2, 5, 4])
sorted_arr = np.sort(arr)
print(sorted_arr) # 輸出: [1 2 3 4 5]
axis
:指定排序的軸,預設為-1(最後一軸)kind
:指定排序算法,常見的有 quicksort(快速排序)
、mergesort(合併排序)
、heapsort(堆排序)
ndarray.sort()
直接對陣列進行排序,修改原陣列
arr.sort()
print(arr) # 輸出: [1 2 3 4 5]
參數:與 numpy.sort()
相同
numpy.argsort()
返回排序後的索引值
index = np.argsort(arr)
print(index) # 輸出: [1 2 0 4 3] # 表示原始陣列中元素的排序索引
多維陣列排序
arr = np.array([[3, 1], [2, 5]])
sorted_arr = np.sort(arr, axis=1) # 按行排序
print(sorted_arr)
sorted_arr = np.sort(arr, axis=0) # 按列排序
print(sorted_arr)
複數排序
numpy.sort_complex()
:特別用於複數陣列的排序,根據複數的模長進行排序
部分排序
numpy.partition()
:將陣列分為兩部分,一部分小於指定的值,另一部分大於等於指定的值
# 隨機生成一個陣列
arr = np.random.randn(5)
# 排序
sorted_arr = np.sort(arr)
# 根據索引值對另一個陣列排序
values = np.array([10, 20, 30, 40, 50])
sorted_values = values[np.argsort(arr)]
# 按列排序一個二維陣列
arr2d = np.random.randn(3, 4)
sorted_arr2d = np.sort(arr2d, axis=0)
選擇排序方法
:根據是否需要修改原陣列、排序維度、資料型態等因素選擇合適的函數排序算法
:NumPy提供多種排序算法,可根據資料量和排序穩定性等因素選擇索引排序
:numpy.argsort()對於需要保留原始資料索引的情況非常有用
圖片來源:(https://forum.gamer.com.tw/Co.php?bsn=43473&sn=45361)