首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

NumPy ndarray argsort 方法詳解:按值排序獲取索引

     編輯:C++ 入門

NumPy ndarray argsort 方法詳解

函式簽名

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])  → 降序索引

二維陣列:axis 參數

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 參數:排序演算法選擇

kind演算法穩定性速度
quicksort快速排序不穩定快
mergesort合併排序穩定中
heapsort堆積排序不穩定慢
stable自動選穩定排序穩定視情況

order 參數:結構化陣列指定排序欄位

dt = np.dtype([('name','U10'), ('age','i4')])
arr = np.array([('Alice',25), ('Bob',20)], dtype=dt)
np.argsort(arr, order='age')  # 按 age 排序得索引
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved