
- 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 中透過建立一個布林陣列(掩碼)來執行過濾,其中每個元素指示原始陣列中相應的元素是否滿足指定條件。然後使用此掩碼索引原始陣列,提取滿足條件的元素。
NumPy 提供了多種透過**布林索引**和**條件運算**過濾陣列的方法。
使用布林索引的基本過濾
布林索引允許您根據條件過濾陣列元素。透過對陣列應用條件,您將獲得一個布林陣列,您可以使用它來索引原始陣列。
示例
在以下示例中,我們從給定陣列中過濾大於值“10”的元素:
import numpy as np # Creating an array array = np.array([1, 5, 8, 12, 20, 3]) # Define the condition condition = array > 10 # Apply the condition to filter the array filtered_array = array[condition] print("Original Array:", array) print("Filtered Array (elements > 10):", filtered_array)
以下是獲得的輸出:
Original Array: [ 1 5 8 12 20 3] Filtered Array (elements > 10): [12 20]
使用多個條件過濾
使用多個條件過濾允許您從 NumPy 陣列中選擇同時滿足多個條件的元素。這是透過使用以下邏輯運算子組合多個布林條件來實現的:
- **與(&) -** 選擇滿足兩個條件的元素。
- **或(|) -** 選擇滿足至少一個條件的元素。
- **非(~) -** 選擇不滿足條件的元素。
表示組合條件的生成的布林陣列然後用於索引原始陣列,提取滿足所有指定條件的元素。
示例
在此示例中,我們使用多個條件過濾一定範圍內的元素:
import numpy as np # Creating an array array = np.array([1, 5, 8, 12, 20, 3]) # Define multiple conditions condition = (array > 5) & (array < 15) # Apply the conditions to filter the array filtered_array = array[condition] print("Original Array:", array) print("Filtered Array (5 < elements < 15):", filtered_array)
這將產生以下結果:
Original Array: [ 1 5 8 12 20 3] Filtered Array (5 < elements < 15): [ 8 12]
使用函式過濾
使用函式進行過濾時,您通常定義一個函式,該函式以陣列元素作為輸入並返回一個布林值(True 或 False),指示是否應將每個元素包含在結果中。
然後將此函式應用於陣列,生成的布林陣列用於索引和過濾原始資料。
示例:使用 where() 函式過濾
在下面的示例中,我們使用 where() 函式過濾 NumPy 中的元素:
import numpy as np # Creating an array array = np.array([1, 5, 8, 12, 20, 3]) # Define the condition condition = array > 10 # Filter elements filtered_indices = np.where(condition) filtered_array = array[filtered_indices] print("Original Array:", array) print("Filtered Array (elements > 10) using np.where:", filtered_array)
此函式返回條件為“True”的索引。這些索引用於提取如下所示的過濾元素:
Original Array: [ 1 5 8 12 20 3] Filtered Array (elements > 10) using np.where: [12 20]
示例:使用自定義函式過濾
讓我們來看一個使用自定義函式根據特定條件過濾陣列的示例:
import numpy as np # Create a NumPy array array = np.array([10, 15, 20, 25, 30, 35]) # Define a custom function for filtering def is_prime(num): """Return True if num is a prime number, False otherwise.""" if num <= 1: return False for i in range(2, int(np.sqrt(num)) + 1): if num % i == 0: return False return True # Apply the function to each element of the array mask = np.array([is_prime(x) for x in array]) # Use the mask to filter the array filtered_array = array[mask] print("Original Array:", array) print("Mask (prime numbers):", mask) print("Filtered Array (prime numbers):", filtered_array)
獲得的輸出如下所示:
Original Array: [10 15 20 25 30 35] Mask (prime numbers): [False False False False False False] Filtered Array (prime numbers): []
多維陣列中的過濾
在多維陣列中,可以使用布林索引進行過濾,類似於一維陣列。但是,您需要確保過濾條件已正確應用以處理陣列的維度。
以下是多維陣列中過濾所涉及的步驟:
- **定義過濾條件 -** 建立應用於陣列中元素的布林條件。這些條件可以基於值或其他標準。
- **跨維度應用條件 -** 使用這些條件來索引和選擇元素。對於多維陣列,您可能需要處理特定維度的條件或跨所有維度應用條件。
示例
考慮一個 2D 陣列,我們希望根據應用於特定列中元素的條件過濾行:
import numpy as np # Create a 2D NumPy array array = np.array([[10, 20, 30], [15, 25, 35], [20, 30, 40]]) # Define a condition for filtering # Select rows where the value in the second column is greater than 25 condition = array[:, 1] > 25 # Use the condition to filter the array filtered_array = array[condition] print("Original Array:\n", array) print("Condition (values in second column > 25):", condition) print("Filtered Array:\n", filtered_array)
執行上述程式碼後,我們將獲得以下輸出:
Original Array: [[10 20 30] [15 25 35] [20 30 40]] Condition (values in second column > 25): [False False True] Filtered Array: [[20 30 40]]
廣告