[Python][NumPy]如何在 Numpy 數組中查找值的索引?

更新於 發佈於 閱讀時間約 5 分鐘

如何在 Numpy 數組中查找值的索引?

就是使用numpy.where

語法:

numpy.where() 函數的語法中,方括號 [] 表示其中的參數是可選的。而斜杠 / 表示斷行符號,它的作用是將一行的代碼分成多行以提高可讀性。

所以 [x, y, ]/ 表示這兩個參數 xy 是可選的,可以根據需要提供或者省略。

numpy.where(condition, [x, y, ]/)
  • condition:布林陣列或布林條件。
  • x, y:選擇性參數,用於指定根據 condition 中的 TrueFalse 元素所返回的結果。如果省略,則 numpy.where() 函數將返回一個包含滿足 condition 的元素的索引的元組。

這個函數可以根據 condition 中的值,返回不同的結果。如果提供了 xy,則 numpy.where() 將根據 condition 中的值選擇性地返回 xy 中的元素。


基本用法

numpy.where()返回一個包含滿足條件的元素索引的元組

numpy.where(condition)

在這種基本用法中,condition 是一個布林陣列,它描述了你希望在陣列中查找的條件。

範例

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr > 2)
print(indices) # 输出: (array([2, 3, 4]),)
indices = np.where(arr > 2)[0] #單純只取索引值
print(indices) # 输出: [2, 3, 4]

根據條件選擇性地返回兩個值中的一個

numpy.where(condition, x, y)

在這種形式中,condition 是一個布林陣列,xy 是兩個具有相同形狀的陣列,它們分別對應於 conditionTrueFalse 的元素。

numpy.where() 函數將返回一個新的陣列,其中 condition 中的 True 元素被替換為 x 中對應的元素,而 False 元素被替換為 y 中對應的元素。

範例1

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 2, 'yes', 'no')
print(result) # 输出: ['no' 'no' 'yes' 'yes' 'yes']

範例2

滿足條件則該元素*10,沒有則保持原狀。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 2, arr, arr * 10)
print(result) # 输出: [10 20 3 4 5]

兩個條件判斷

np.where(condition1, x, np.where(condition2, y, z))

這種形式中,首先根據 condition1 執行 np.where(),然後根據 condition2 選擇 yz 中的元素。如果 condition1True,則返回 x,否則根據 condition2 返回 yz 中的元素。

範例

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.where(arr > 2, '比二大', np.where(arr < 2, '比二小', '等於二'))
print(result) # 输出: ['比二小' '等於二' '比二大' '比二大' '比二大']

第一次根據條件 arr > 2 選擇返回的值。如果條件為真,則返回 '比二大';否則進行第二次 numpy.where() 調用,根據條件 arr < 2 選擇返回的值。如果條件為真,則返回 '比二小';否則返回 '等於二'

有點繞口令。

這些是 numpy.where() 函數的基本語法形式,通過適當地使用它們,你可以根據不同的需求靈活地進行陣列元素的選擇和替換。

其他應用

我最常就是應用在影像處理上,得到相對應於圖像中座標值。

以下是我其他文章,有應用到numpy.where()這個方法的應用

[OpenCV應用][Python]利用numpy找出物件邊緣求出寬度及高度

參考文獻

https://numpy.org/doc/stable/release/1.23.0-notes.html#faster-np-where





avatar-img
128會員
215內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
NumPy 提供了一種 N 維數組類型 ndarray(N-dimensional array) ,它描述了相同類型的「數據類型」的集合。 多維數組: ndarray 是一個 N 維數組,其中 N 可以是任意整數。一維數組是向量,二維數組是矩陣
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。 Type hints 是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
在實務上,條碼槍傳送的資訊可能包含不可見字符或控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。 本文將探討,如何查詢及處理這些特殊字符。
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
NumPy 提供了一種 N 維數組類型 ndarray(N-dimensional array) ,它描述了相同類型的「數據類型」的集合。 多維數組: ndarray 是一個 N 維數組,其中 N 可以是任意整數。一維數組是向量,二維數組是矩陣
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
在程式開發中,協作合作專案時,利用type hint,可以快速知道函式輸入及輸出的資料型別,在後續的維護時也會更加方便及可讀。 Type hints 是Python 3.5 版本引入的功能,它允許在函數宣告中指定參數和傳回值的類型。Type hints 是一種可選的註解形式,不會影響程式碼的運行,
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
在實務上,條碼槍傳送的資訊可能包含不可見字符或控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。 本文將探討,如何查詢及處理這些特殊字符。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。