
- 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 中使用花式索引排序涉及使用索引陣列重新排列另一個數組中的元素。花式索引允許您根據特定索引對陣列進行排序或重新排序,讓您更好地控制資料組織方式。
例如,您可以首先使用 argsort() 函式確定元素的順序,然後使用這些索引對原始陣列進行排序。這對於需要精確控制元素順序的複雜資料操作任務非常有用。
基本花式索引
基本花式索引涉及使用一個或多個索引陣列從 NumPy 陣列中選擇元素。這些索引可以是整數陣列或布林值陣列,允許非連續選擇元素。這對於重新排序或同時選擇多個元素特別有用。
示例
在下面的示例中,我們使用花式索引根據一組指定的索引重新排序陣列。透過使用 “indices” 陣列索引 “arr”,我們得到一個新的陣列,其中元素根據給定的順序排列 -
import numpy as np arr = np.array([10, 20, 30, 40, 50]) indices = np.array([4, 2, 3, 1, 0]) sorted_arr = arr[indices] print("Original Array:", arr) print("Sorted Array with Fancy Indexing:", sorted_arr)
以下是獲得的輸出 -
Original Array: [10 20 30 40 50] Sorted Array with Fancy Indexing: [50 30 40 20 10]
使用花式索引排序陣列
使用花式索引排序陣列涉及首先建立一個表示所需元素順序的索引陣列。然後,這些索引用於根據特定標準重新排序陣列元素。
花式索引提供了一種執行高階排序操作的方法,這些操作超越了簡單的就地排序。
示例
在這個例子中,我們使用 np.argsort() 函式檢索將對陣列 “arr” 進行排序的索引。然後使用這些索引將 “arr” 重新排列成一個排序後的陣列 -
import numpy as np arr = np.array([3, 1, 4, 1, 5, 9]) # Get indices that would sort the array sort_order = np.argsort(arr) sorted_arr = arr[sort_order] print("Original Array:", arr) print("Sorted Array:", sorted_arr)
這將產生以下結果 -
Original Array: [3 1 4 1 5 9] Sorted Array: [1 1 3 4 5 9]
多維陣列的花式索引
在多維陣列中,花式索引可以應用於沿特定軸重新排序或選擇元素。
透過使用索引陣列,您可以實現各種操作,例如排序元素、重新排列行或列以及提取特定資料點。
示例:二維陣列中的花式索引
在下面的示例中,我們使用花式索引重新排序二維陣列的行和列。透過指定 “row_indices” 和 “col_indices”,我們重新排列陣列的行和列以生成一個新的重新排序的陣列 -
import numpy as np arr = np.array([[10, 20, 30], [40, 50, 60]]) row_indices = np.array([1, 0]) col_indices = np.array([2, 1, 0]) # Reorder rows and columns reordered_arr = arr[row_indices][:, col_indices] print("Original Array:\n", arr) print("Reordered Array:\n", reordered_arr)
以下是上述程式碼的輸出 -
Original Array: [[10 20 30] [40 50 60]] Reordered Array: [[60 50 40] [30 20 10]]
示例:三維陣列中的花式索引
在三維陣列中,花式索引可用於重新排序第一個軸上的切片。在這裡,透過指定 “slice_indices”,我們重新排列陣列的切片以生成一個具有重新排序的切片的陣列 -
import numpy as np # Define a 3D NumPy array with shape (3, 2, 2) arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]]) # Define an array of indices to reorder slices along the first axis slice_indices = np.array([2, 0, 1]) # Reorder the slices using fancy indexing reordered_slices = arr[slice_indices] print("Original Array:\n", arr) print("Reordered Slices:\n", reordered_slices)
獲得的輸出如下所示 -
Original Array: [[[ 1 2] [ 3 4]] [[ 5 6] [ 7 8]] [[ 9 10] [11 12]]] Reordered Slices: [[[ 9 10] [11 12]] [[ 1 2] [ 3 4]] [[ 5 6] [ 7 8]]]
使用花式索引和結構化陣列排序
花式索引也可以應用於結構化陣列,您可以在其中根據特定欄位的值進行排序。
NumPy 中的結構化陣列是具有複合資料型別的陣列,其中每個元素可以具有多個具有不同資料型別的欄位。這些對於在單個數組中管理異構資料很有用。
示例
在下面的示例中,我們根據 “age” 欄位對結構化 NumPy 陣列進行排序。透過對 “age” 欄位使用 np.argsort() 函式,我們獲得重新排序陣列的索引,從而得到一個按年齡排序的新陣列 -
import numpy as np dtype = [('name', 'S10'), ('age', 'i4')] values = [('Alice', 25), ('Bob', 30), ('Charlie', 20)] arr = np.array(values, dtype=dtype) # Sort by age sorted_indices = np.argsort(arr['age']) sorted_arr = arr[sorted_indices] print("Original Structured Array:\n", arr) print("Sorted by Age:\n", sorted_arr)
我們得到如下所示的輸出 -
Original Structured Array: [(b'Alice', 25) (b'Bob', 30) (b'Charlie', 20)] Sorted by Age: [(b'Charlie', 20) (b'Alice', 25) (b'Bob', 30)]