
- NumPy 教程
- NumPy - 首頁
- NumPy - 簡介
- NumPy - 環境配置
- NumPy 陣列
- NumPy - Ndarray 物件
- NumPy - 資料型別
- NumPy 陣列的建立和操作
- NumPy - 陣列建立函式
- NumPy - 陣列操作
- NumPy - 從現有資料建立陣列
- NumPy - 從數值範圍建立陣列
- NumPy - 陣列迭代
- NumPy - 陣列重塑
- NumPy - 陣列連線
- NumPy - 陣列堆疊
- NumPy - 陣列分割
- NumPy - 陣列扁平化
- NumPy - 陣列轉置
- NumPy 索引和切片
- NumPy - 索引與切片
- NumPy - 高階索引
- NumPy 陣列屬性和操作
- NumPy - 陣列屬性
- NumPy - 陣列形狀
- NumPy - 陣列大小
- NumPy - 陣列步長
- NumPy - 陣列元素大小
- NumPy - 廣播
- NumPy - 算術運算
- NumPy - 陣列加法
- NumPy - 陣列減法
- NumPy - 陣列乘法
- NumPy - 陣列除法
- NumPy 高階陣列操作
- NumPy - 交換陣列的軸
- NumPy - 位元組交換
- NumPy - 複製與檢視
- NumPy - 元素級陣列比較
- NumPy - 陣列過濾
- NumPy - 陣列連線
- NumPy - 排序、搜尋和計數函式
- NumPy - 陣列搜尋
- NumPy - 陣列的並集
- NumPy - 查詢唯一行
- NumPy - 建立日期時間陣列
- NumPy - 二元運算子
- NumPy - 字串函式
- NumPy - 數學函式
- NumPy - 統計函式
- NumPy - 矩陣庫
- NumPy - 線性代數
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 繪製直方圖
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高階操作
- NumPy - 陣列排序
- NumPy - 沿軸排序
- NumPy - 使用花式索引排序
- NumPy - 結構化陣列
- NumPy - 建立結構化陣列
- NumPy - 操作結構化陣列
- NumPy - 欄位訪問
- NumPy - 記錄陣列
- Numpy - 載入陣列
- Numpy - 儲存陣列
- NumPy - 向陣列追加值
- NumPy - 交換陣列的列
- NumPy - 向陣列插入軸
- NumPy 處理缺失資料
- NumPy - 處理缺失資料
- NumPy - 識別缺失值
- NumPy - 刪除缺失資料
- NumPy - 估算缺失資料
- NumPy 效能最佳化
- NumPy - 使用陣列進行效能最佳化
- NumPy - 使用陣列進行向量化
- NumPy - 陣列的記憶體佈局
- Numpy 線性代數
- NumPy - 線性代數
- NumPy - 矩陣庫
- NumPy - 矩陣加法
- NumPy - 矩陣減法
- NumPy - 矩陣乘法
- NumPy - 元素級矩陣運算
- NumPy - 點積
- NumPy - 矩陣求逆
- NumPy - 行列式計算
- NumPy - 特徵值
- NumPy - 特徵向量
- NumPy - 奇異值分解
- NumPy - 求解線性方程組
- NumPy - 矩陣範數
- NumPy 元素級矩陣運算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位數
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合運算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 並集
- NumPy - 差集
- NumPy 有用資源
- NumPy 編譯器
- NumPy - 快速指南
- NumPy - 有用資源
- NumPy - 討論
NumPy - 沿軸排序
NumPy 中的沿軸排序
在 NumPy 中,陣列可以是多維的,排序可以沿著這些維度(軸)中的任何一個進行。沿軸排序意味著根據該軸上的值按特定順序排列陣列的元素。
在 NumPy 中,不同的軸是:**第 0 軸**(行),**第 1 軸**(列),以及**更高階軸**(深度或附加維度)。
np.sort() 函式
np.sort() 函式對陣列的元素進行排序,並返回一個包含排序後元素的新陣列。排序可以在指定的軸上進行,如果沒有指定軸,則函式預設沿最後一個軸排序。以下是語法:
numpy.sort(a, axis=-1, kind=None, order=None)
其中,
- **a:** 要排序的陣列。
- **axis:** 要排序的軸。預設為 -1,表示沿最後一個軸排序。
- **kind:** 要使用的排序演算法。選項包括 'quicksort'、'mergesort'、'heapsort' 和 'stable'。
- **order:** 在對結構化陣列排序時使用,用於定義要比較的欄位。
沿軸 0(行)排序
在 NumPy 中沿軸 0 排序是指沿垂直軸排序陣列元素,這對應於二維陣列中的行。
當您想要根據每一列中的值來排序矩陣的行時,此操作很有用。
在二維陣列中:
- 軸 0 對應於行。
- 軸 1 對應於列。
沿軸 0 排序時,NumPy 會按列排序元素。對於每一列,值都按升序排列,行也相應地重新排序。
示例
在下面的示例中,我們使用 sort() 函式對每一列中的元素進行排序:
import numpy as np # Create a 2D array arr = np.array([[3, 6, 4], [5, 1, 2]]) # Sort along axis 0 (rows) sorted_arr_axis0 = np.sort(arr, axis=0) print("Original Array:\n", arr) print("Sorted Along Axis 0:\n", sorted_arr_axis0)
輸出將重新排序行,以便每一列中的值按升序排序:
Original Array: [[3 6 4] [5 1 2]] Sorted Along Axis 0: [[3 1 2] [5 6 4]]
沿軸 1(列)排序
在 NumPy 中沿軸 1 排序是指沿水平軸排序陣列元素,這對應於二維陣列中的列。當您想要根據它們的值來排序每一行中的元素時,此操作很有用。
沿軸 1 排序時,NumPy 會按行排序元素。對於每一行,值都按升序排列,列的順序也相應地調整。
示例
在這個例子中,我們使用 sort() 函式對每一行中的元素進行排序:
import numpy as np # Create a 2D array arr = np.array([[3, 2, 1], [6, 5, 4]]) # Sort along axis 1 (columns) sorted_arr_axis1 = np.sort(arr, axis=1) print("Original Array:\n", arr) print("Sorted Along Axis 1:\n", sorted_arr_axis1)
輸出將重新排序每一行中的列,以便值按升序排序:
Original Array: [[3 2 1] [6 5 4]] Sorted Along Axis 1: [[1 2 3] [4 5 6]]
多維陣列排序
NumPy 中的多維陣列排序涉及沿一個或多個特定軸組織陣列的元素。
在多維陣列中沿特定軸排序類似於二維陣列中的排序,但擴充套件到更高維度。以下是沿不同軸排序的工作方式:
- **軸 0(第一維):**沿軸 0 排序會影響行。
- **軸 1(第二維):**沿軸 1 排序會影響列。
- **軸 2(第三維):**在三維陣列中,沿軸 2 排序會影響深度切片。
示例
在下面的示例中,我們沿不同的軸對三維陣列進行排序:深度(軸 0)、行(軸 1)和列(軸 2)。每次排序操作都會在指定的維度內排列元素,從而產生不同順序的陣列:
import numpy as np # Create a 3D array arr = np.array([[[3, 2, 1], [6, 5, 4]], [[9, 8, 7], [12, 11, 10]]]) # Sort along axis 0 (depth) sorted_arr_axis0 = np.sort(arr, axis=0) # Sort along axis 1 (rows) sorted_arr_axis1 = np.sort(arr, axis=1) # Sort along axis 2 (columns) sorted_arr_axis2 = np.sort(arr, axis=2) print("Original Array:\n", arr) print("Sorted Along Axis 0:\n", sorted_arr_axis0) print("Sorted Along Axis 1:\n", sorted_arr_axis1) print("Sorted Along Axis 2:\n", sorted_arr_axis2)
以下是上述程式碼的輸出:
Original Array: [[[ 3 2 1] [ 6 5 4]] [[ 9 8 7] [12 11 10]]] Sorted Along Axis 0: [[[ 3 2 1] [ 6 5 4]] [[ 9 8 7] [12 11 10]]] Sorted Along Axis 1: [[[ 3 2 1] [ 6 5 4]] [[ 9 8 7] [12 11 10]]] Sorted Along Axis 2: [[[ 1 2 3] [ 4 5 6]] [[ 7 8 9] [10 11 12]]]
使用不同的演算法進行排序
NumPy sort() 函式支援幾種排序演算法,每種演算法都有其自身的優勢:
- 快速排序 (Quicksort)
- 歸併排序 (Mergesort)
- 堆排序 (Heapsort)
- 穩定排序 (Stable Sort)
可以透過在 np.sort() 函式中設定 **kind** 引數來選擇這些演算法。預設情況下,NumPy 使用“快速排序”演算法。
排序演算法是按特定順序排列元素的方法。不同的演算法具有不同的效能特徵,並且針對各種型別的資料和陣列大小進行了最佳化。
示例
在這個例子中,陣列使用“快速排序”和“歸併排序”演算法沿軸“1”進行排序。不同的排序演算法會影響效能和穩定性:
import numpy as np # Create a 2D array arr = np.array([[3, 2, 1], [6, 5, 4]]) # Sort using different algorithms sorted_quicksort = np.sort(arr, axis=1, kind='quicksort') sorted_mergesort = np.sort(arr, axis=1, kind='mergesort') print("Sorted with Quicksort:\n", sorted_quicksort) print("Sorted with Mergesort:\n", sorted_mergesort)
獲得的輸出如下所示:
Sorted with Quicksort: [[1 2 3] [4 5 6]] Sorted with Mergesort: [[1 2 3] [4 5 6]]