
- 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 提供了幾種排序演算法,每種演算法都有其自身的特點。以下是三種常見排序演算法的比較:
kind | 速度 | 最壞情況 | 工作空間 | 穩定性 |
---|---|---|---|---|
'quicksort' | 1 | O(n^2) | 0 | 否 |
'mergesort' | 2 | O(n*log(n)) | ~n/2 | 是 |
'heapsort' | 3 | O(n*log(n)) | 0 | 否 |
numpy.sort() 函式
sort() 函式返回輸入陣列的排序副本。它可以沿任何指定的軸對陣列進行排序,並支援不同的排序演算法。以下是語法:
numpy.sort(a, axis, kind, order)
其中,
序號 | 引數和描述 |
---|---|
1 | a 要排序的陣列 |
2 | axis 要排序的陣列的軸。如果為 None,則陣列將被展平,並在最後一個軸上排序 |
3 | kind 預設為 quicksort |
4 | order 如果陣列包含欄位,則要排序的欄位的順序 |
示例
在以下示例中,我們分別使用預設方式和沿特定軸對二維 NumPy 陣列進行排序。我們還演示瞭如何根據特定欄位(例如“name”)對結構化陣列進行排序:
import numpy as np # Create a 2D array a = np.array([[3, 7], [9, 1]]) print("Our array is:",a) # Default sort print("Applying sort() function:",np.sort(a)) # Sort along axis 0 print("Sort along axis 0:",np.sort(a, axis=0)) # Order parameter in sort function dt = np.dtype([('name', 'S10'), ('age', int)]) a = np.array([("raju", 21), ("anil", 25), ("ravi", 17), ("amar", 27)], dtype=dt) print("Our array is:",a) print("Order by name:",np.sort(a, order='name'))
它將產生以下輸出:
Our array is: [[3 7] [9 1]] Applying sort() function: [[3 7] [1 9]] Sort along axis 0: [[3 1] [9 7]] Our array is: [('raju', 21) ('anil', 25) ('ravi', 17) ('amar', 27)] Order by name: [('amar', 27) ('anil', 25) ('raju', 21) ('ravi', 17)]
numpy.argsort() 函式
numpy.argsort() 函式對輸入陣列沿給定軸並使用指定的排序型別進行間接排序,並返回資料索引的陣列。此索引陣列用於構造排序陣列。
示例
在此示例中,我們使用 argsort() 函式檢索索引,即排序元素在原始陣列中的位置。使用這些索引,您可以重建排序陣列:
import numpy as np # Create an array x = np.array([3, 1, 2]) print("Our array is:",x) # Get indices that would sort the array y = np.argsort(x) print("Applying argsort() to x:",y) # Reconstruct the sorted array using the indices print("Reconstruct original array in sorted order:",x[y]) # Reconstruct the original array using a loop print("Reconstruct the original array using loop:") for i in y: print(x[i], end=' ')
它將產生以下輸出:
Our array is: [3 1 2] Applying argsort() to x: [1 2 0] Reconstruct original array in sorted order: [1 2 3] Reconstruct the original array using loop: 1 2 3
numpy.lexsort() 函式
NumPy lexort() 函式使用一系列鍵執行間接排序。鍵可以看作電子表格中的列。該函式返回一個索引陣列,可以使用它來獲取排序資料。請注意,最後一個鍵恰好是排序的主鍵。
示例
在此示例中,我們使用 np.lexsort() 函式根據多個鍵對資料集進行排序,其中最後一個鍵“nm”是主要排序標準。然後使用排序索引透過組合名稱和相應的欄位來顯示排序資料:
import numpy as np # Define keys nm = ('raju', 'anil', 'ravi', 'amar') dv = ('f.y.', 's.y.', 's.y.', 'f.y.') # Get indices for sorted order ind = np.lexsort((dv, nm)) print("Applying lexsort() function:",ind) # Use indices to get sorted data print("Use this index to get sorted data:",[nm[i] + ", " + dv[i] for i in ind])
它將產生以下輸出:
Applying lexsort() function: [3 1 0 2] Use this index to get sorted data: ['amar, f.y.', 'anil, s.y.', 'raju, f.y.', 'ravi, s.y.']
NumPy 提供了用於查詢最大值、最小值和非零元素以及滿足條件的元素的索引的函式。
numpy.argmax() 和 numpy.argmin() 函式
NumPy argmax() 和 argmin() 函式分別返回沿給定軸的最大和最小元素的索引。
示例
在此示例中,我們使用 np.argmax() 和 np.argmin() 函式查詢二維陣列中最大值和最小值的索引,包括展平陣列和沿特定軸的情況:
import numpy as np # Create a 2D array a = np.array([[30, 40, 70], [80, 20, 10], [50, 90, 60]]) print("Our array is:",a) # Apply argmax() function print("Applying argmax() function:",np.argmax(a)) # Index of maximum number in flattened array print("Index of maximum number in flattened array:",a.flatten()) # Array containing indices of maximum along axis 0 print("Array containing indices of maximum along axis 0:") maxindex = np.argmax(a, axis=0) print(maxindex) # Array containing indices of maximum along axis 1 print("Array containing indices of maximum along axis 1:") maxindex = np.argmax(a, axis=1) print(maxindex) # Apply argmin() function print("Applying argmin() function:") minindex = np.argmin(a) print(minindex) # Flattened array print("Flattened array:",a.flatten()[minindex]) # Flattened array along axis 0 print("Flattened array along axis 0:") minindex = np.argmin(a, axis=0) print(minindex) # Flattened array along axis 1 print("Flattened array along axis 1:") minindex = np.argmin(a, axis=1) print(minindex)
輸出包括這些極值的索引,演示瞭如何在陣列中訪問和解釋這些位置:
Our array is: [[30 40 70] [80 20 10] [50 90 60]] Applying argmax() function: 7 Index of maximum number in flattened array [30 40 70 80 20 10 50 90 60] Array containing indices of maximum along axis 0: [1 2 0] Array containing indices of maximum along axis 1: [2 0 1] Applying argmin() function: 5 Flattened array: 10 Flattened array along axis 0: [0 1 1] Flattened array along axis 1: [0 2 0]
numpy.nonzero() 函式
numpy.nonzero() 函式返回輸入陣列中非零元素的索引。
示例
在下面的示例中,我們使用 nonzero() 函式檢索陣列“a”中非零元素的索引:
import numpy as np a = np.array([[30,40,0],[0,20,10],[50,0,60]]) print ('Our array is:',a) print ('Applying nonzero() function:',np.nonzero (a))
它將產生以下輸出:
Our array is: [[30 40 0] [ 0 20 10] [50 0 60]] Applying nonzero() function: (array([0, 0, 1, 1, 2, 2]), array([0, 1, 1, 2, 0, 2]))
numpy.where() 函式
where() 函式返回輸入陣列中滿足給定條件的元素的索引,如下面的示例所示:
import numpy as np x = np.arange(9.).reshape(3, 3) print ('Our array is:',x) print ('Indices of elements > 3') y = np.where(x > 3) print (y) print ('Use these indices to get elements satisfying the condition',x[y])
它將產生以下輸出:
Our array is: [[ 0. 1. 2.] [ 3. 4. 5.] [ 6. 7. 8.]] Indices of elements > 3 (array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2])) Use these indices to get elements satisfying the condition [ 4. 5. 6. 7. 8.]
numpy.extract() 函式
extract() 函式返回滿足任何條件的元素,如下面的示例所示:
import numpy as np x = np.arange(9.).reshape(3, 3) print ('Our array is:',x) # define a condition condition = np.mod(x,2) == 0 print ('Element-wise value of condition',condition) print ('Extract elements using condition',np.extract(condition, x))
它將產生以下輸出:
Our array is: [[ 0. 1. 2.] [ 3. 4. 5.] [ 6. 7. 8.]] Element-wise value of condition [[ True False True] [False True False] [ True False True]] Extract elements using condition [ 0. 2. 4. 6. 8.]