numpy.argsort(a, axis=-1, kind='quicksort', order=None)
回傳將陣列 a 排序後的**索引陣列**(由小到大)。
import numpy as np x = np.array([3, 1, 2]) np.argsort(x) # array([1, 2, 0]) → 索引 1 值 1 最小,索引 0 值 3 最大 np.argsort(-x) # array([0, 2, 1]) → 降序索引
x = np.array([[0, 3],
[2, 2]])
np.argsort(x, axis=0) # 按列排序
# array([[0, 1],
# [1, 0]])
# 第 0 列:0<2 → 索引 [0,1];第 1 列:2<3 → 索引 [1,0]
np.argsort(x, axis=1) # 按行排序
# array([[0, 1],
# [0, 1]])
# 第 0 行:0<3 → [0,1];第 1 行:2=2 → 穩定排序保持原序 [0,1]
x = np.array([3, 1, 2]) sorted_x = x[np.argsort(x)] # [1, 2, 3] 升序 sorted_x_desc = x[np.argsort(-x)] # [3, 2, 1] 降序 # 或 a = x[np.argsort(x)] a[::-1] # 反轉得降序
| kind | 演算法 | 穩定性 | 速度 |
|---|---|---|---|
| quicksort | 快速排序 | 不穩定 | 快 |
| mergesort | 合併排序 | 穩定 | 中 |
| heapsort | 堆積排序 | 不穩定 | 慢 |
| stable | 自動選穩定排序 | 穩定 | 視情況 |
dt = np.dtype([('name','U10'), ('age','i4')])
arr = np.array([('Alice',25), ('Bob',20)], dtype=dt)
np.argsort(arr, order='age') # 按 age 排序得索引