
- 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 提供各種函式來執行搜尋,即使是在大型多維陣列中,它們如下所示:
- where() 函式
- nonzero() 函式
- searchsorted() 函式
- argmax() 函式
- argmin() 函式
- extract() 函式
使用 where() 函式
NumPy 的 where() 函式用於查詢陣列中滿足給定條件的元素的索引。該函式也可用於根據條件替換元素。以下是語法:
np.where(condition, [x, y])
其中:
- condition − 要檢查的條件。
- x (可選) − 在條件為真時使用的值。
- y (可選) − 在條件為假時使用的值。
示例
在以下示例中,我們使用 where() 函式檢索陣列中大於“25”的元素的索引,並用“0”替換小於或等於“25”的陣列元素:
import numpy as np array = np.array([10, 20, 30, 40, 50]) indices = np.where(array > 25) print("Indices where array elements are greater than 25:", indices) # Replacing elements based on condition modified_array = np.where(array > 25, array, 0) print("Array after replacing elements <= 25 with 0:", modified_array)
以下是獲得的輸出:
Indices where array elements are greater than 25: (array([2, 3, 4]),) Array after replacing elements <= 25 with 0: [ 0 0 30 40 50]
使用 nonzero() 函式
NumPy 的 nonzero() 函式用於查詢陣列中所有非零元素的索引。它返回一個數組元組,其中每個陣列包含沿特定維度的非零元素的索引。
當您想過濾掉零元素或識別稀疏陣列中重要元素的位置時,此函式很有用。以下是語法:
numpy.nonzero(a)
其中,a 是要查詢非零元素索引的輸入陣列。
示例
在下面的示例中,我們使用 nonzero() 函式檢索一維陣列中非零元素的索引:
import numpy as np array = np.array([0, 1, 2, 0, 3, 0, 4]) nonzero_indices = np.nonzero(array) print("Indices of non-zero elements:", nonzero_indices)
這將產生以下結果:
Indices of non-zero elements: (array([1, 2, 4, 6]),)
使用 searchsorted() 函式
NumPy 的 searchsorted() 函式用於查詢應插入元素以保持排序陣列中順序的索引。
此函式在需要在動態插入元素時保持排序順序的演算法中很有用。以下是語法:
np.searchsorted(sorted_array, values, side='left')
其中:
- sorted_array − 要搜尋的已排序陣列。
- values − 要插入的值。
- side − 如果為“left”,則給出第一個合適位置的索引。如果為“right”,則給出最後一個合適位置的索引。
示例
在此示例中,我們檢索在已排序陣列中插入值“2”、“4”和“6”以保持順序的索引:
import numpy as np sorted_array = np.array([1, 3, 5, 7, 9]) values = np.array([2, 4, 6]) indices = np.searchsorted(sorted_array, values) print("Indices where values should be inserted:", indices)
以上程式碼的輸出如下:
Indices where values should be inserted: [1 2 3]
使用 argmax() 函式
NumPy 中的 argmax() 函式用於查詢陣列中沿指定軸的最大值的索引。如果未指定軸,則返回扁平化陣列中最大值的索引。以下是語法:
numpy.argmax(a, axis=None, out=None)
其中:
- a − 輸入陣列。
- axis (可選) − 查詢最大值的軸。如果未指定,則在執行操作之前將陣列展平。
- out (可選) − 將結果儲存到的位置。如果提供,則其形狀必須與預期輸出相同。
示例:在二維陣列中使用 argmax() 函式
在以下示例中,我們使用 argmax() 函式查詢二維陣列中沿指定軸的最大值的索引:
import numpy as np array = np.array([[10, 15, 5], [7, 12, 20]]) index_of_max_along_axis = np.argmax(array, axis=1) print("Indices of the maximum values along axis 1:", index_of_max_along_axis)
獲得的輸出如下所示:
Indices of the maximum values along axis 1: [1 2]
示例:在扁平化陣列中使用 argmax() 函式
在這裡,我們使用 argmax() 函式查詢扁平化陣列中最大值的索引:
import numpy as np array = np.array([[10, 15, 5], [7, 12, 20]]) index_of_max_flattened = np.argmax(array) print("Index of the maximum value in the flattened array:", index_of_max_flattened)
執行以上程式碼後,我們將獲得以下輸出:
Index of the maximum value in the flattened array: 5
使用 argmin() 函式
NumPy 中的 argmin() 函式用於查詢陣列中沿指定軸的最小值的索引。如果未指定軸,則返回扁平化陣列中最小值的索引。以下是語法:
numpy.argmin(a, axis=None, out=None)
其中:
- a − 輸入陣列。
- axis (可選) − 查詢最小值的軸。如果未指定,則在執行操作之前將陣列展平。
- out (可選) − 將結果儲存到的位置。如果提供,則其形狀必須與預期輸出相同。
示例
在以下示例中,我們使用 argmin() 函式查詢二維陣列中沿指定軸的最小值的索引:
import numpy as np array = np.array([[10, 15, 5], [7, 12, 2]]) index_of_min_along_axis = np.argmin(array, axis=1) print("Indices of the minimum values along axis 1:", index_of_min_along_axis)
產生的結果如下:
Indices of the minimum values along axis 1: [2 2]
使用 extract() 函式
NumPy 中的 extract() 函式用於根據布林條件從陣列中提取元素。它返回一個一維陣列,其中只包含輸入陣列中與布林條件中的True值對應的元素。
與返回索引的 np.where() 函式不同,np.extract() 函式直接返回滿足條件的元素。
以下是語法:
numpy.extract(condition, arr)
其中:
- condition − 指定要提取哪些元素的布林陣列或條件。它必須與 arr 的形狀相同。
- arr − 要從中提取元素的輸入陣列。
示例
在下面的示例中,我們使用 np.extract() 函式過濾並返回陣列中大於“25”的元素:
import numpy as np array = np.array([10, 20, 30, 40, 50]) condition = array > 25 extracted_elements = np.extract(condition, array) print("Elements greater than 25:", extracted_elements)
我們得到如下所示的輸出:
Elements greater than 25: [30 40 50]
使用布林索引進行搜尋
NumPy 中的布林索引用於根據特定條件搜尋和過濾陣列。它涉及建立一個布林陣列(或掩碼),其中每個值根據是否滿足條件而為True或False。
然後,此布林陣列用於索引到原始陣列中,僅提取條件為True的那些元素。
示例
以下是如何在 NumPy 中使用布林索引根據條件過濾元素的簡單示例:
import numpy as np array = np.array([10, 20, 30, 40, 50]) boolean_mask = array > 25 filtered_array = array[boolean_mask] print("Filtered array (elements > 25):", filtered_array)
我們得到如下所示的輸出:
Filtered array (elements > 25): [30 40 50]